1
/**
2
* Definition for a binary tree node.
3
* function TreeNode(val, left, right) {
4
* this.val = (val===undefined ? 0 : val)
5
* this.left = (left===undefined ? null : left)
6
* this.right = (right===undefined ? null : right)
7
* }
8
*/
9
/**
10
* @param {TreeNode} root
11
* @param {TreeNode} subRoot
12
* @return {boolean}
13
*/
14
var isSubtree = function (root, subRoot) {
15
if (subRoot === null) return true;
16
if (root === null) return false;
17

18
if (isSameTree(root, subRoot)) {
19
return true;
20
}
21

22
return isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot);
23
};
24

25
function isSameTree(root, subRoot) {
26
if (root === null && subRoot === null) {
27
return true;
28
}
29

30
if ((root && subRoot === null) || (root === null && subRoot)) {
31
return false;
32
}
33

34
if (root.val !== subRoot.val) {
35
return false;
36
}
37
return (
38
isSameTree(root.left, subRoot.left) && isSameTree(root.right, subRoot.right)
39
);
40
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0