-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathleaftSimilarTees.js
More file actions
61 lines (54 loc) · 1.46 KB
/
leaftSimilarTees.js
File metadata and controls
61 lines (54 loc) · 1.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root1
* @param {TreeNode} root2
* @return {boolean}
*/
var leafSimilar = function(root1, root2) {
let l1 = new Array();
let l2 = new Array();
let i = 0;
dfs(root1, l1, false);
if(!dfs(root2, l2, true) || l2.length != l1.length) return false;
return true;
function dfs(node, arr, check) {
if(!node) return true;
let isLeaf = (node.left == null && node.right == null);
if(isLeaf){
if(check) {
if(l1[i] != node.val) return false;
i++;
}
arr.push(node.val);
return true;
}
if(!dfs(node.left, arr, check)) return false;
if(!dfs(node.right, arr, check)) return false;
return true;
}
};
// better solution
leafSimilar = function(root1, root2) {
dfs = function(node, leaves) {
if (node != null) {
if (node.left == null && node.right == null) {
leaves.push(node.val);
}
dfs(node.left, leaves);
dfs(node.right, leaves);
}
}
let leaves1 = [];
let leaves2 = [];
dfs(root1, leaves1);
dfs(root2, leaves2);
return (leaves1.length == leaves2.length &&
leaves1.every((v, i) => v === leaves2[i]))
}