-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsolution.js
38 lines (37 loc) · 1.18 KB
/
solution.js
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
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} s
* @param {TreeNode} t
* @return {boolean}
*/
var isSubtree = function(s, t) {
if (s === null && t === null) {
return true
} else if ((s === null && t !== null) || (s !== null && t === null)) {
return false
} else if (isSameTree(s, t)) {
return true
} else {
return isSubtree(s.left, t) || isSubtree(s.right, t)
}
};
var isSameTree = function(s, t) {
if (s.val === t.val) {
if (s.left === null && s.right === null && t.left === null && t.right === null) {
return true
} else if (s.left !== null && s.right !== null && t.left !== null && t.right !== null) {
return isSameTree(s.left, t.left) && isSameTree(s.right, t.right)
} else if (s.left !== null && s.right === null && t.left !== null && t.right === null) {
return isSameTree(s.left, t.left)
} else if (s.left === null && s.right !== null && t.left === null && t.right !== null) {
return isSameTree(s.right, t.right)
}
}
return false
}