File tree 5 files changed +112
-0
lines changed
algorithms/SubtreeOfAnotherTree
5 files changed +112
-0
lines changed Original file line number Diff line number Diff line change @@ -132,6 +132,7 @@ All solutions will be accepted!
132
132
| 67| [ Add Binary] ( https://leetcode-cn.com/problems/add-binary/description/ ) | [ java/py/js] ( ./algorithms/AddBinary ) | Easy|
133
133
| 504| [ Base 7] ( https://leetcode-cn.com/problems/base-7/description/ ) | [ java/py/js] ( ./algorithms/Base7 ) | Easy|
134
134
| 830| [ Positions Of Large Groups] ( https://leetcode-cn.com/problems/positions-of-large-groups/description/ ) | [ java/py/js] ( ./algorithms/PositionsOfLargeGroups ) | Easy|
135
+ | 572| [ Subtree Of Another Tree] ( https://leetcode-cn.com/problems/subtree-of-another-tree/description/ ) | [ java/py/js] (./algorithms/Subtree Of Another Tree)| Easy|
135
136
136
137
# Database
137
138
| #| Title| Solution| Difficulty|
Original file line number Diff line number Diff line change
1
+ # Subtree Of Another Tree
2
+ This problem is easy to solve by recursive
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for a binary tree node.
3
+ * public class TreeNode {
4
+ * int val;
5
+ * TreeNode left;
6
+ * TreeNode right;
7
+ * TreeNode(int x) { val = x; }
8
+ * }
9
+ */
10
+ class Solution {
11
+ public boolean isSubtree (TreeNode s , TreeNode t ) {
12
+ if (s == null && t == null ) {
13
+ return true ;
14
+ } else if ((s == null && t != null ) || (s != null && t == null )) {
15
+ return false ;
16
+ } else if (isSameTree (s , t )) {
17
+ return true ;
18
+ } else {
19
+ return isSubtree (s .left , t ) || isSubtree (s .right , t );
20
+ }
21
+ }
22
+
23
+ public boolean isSameTree (TreeNode s , TreeNode t ) {
24
+ if (s .val == t .val ) {
25
+ if (s .left == null && s .right == null && t .left == null && t .right == null ) {
26
+ return true ;
27
+ } else if (s .left != null && s .right != null && t .left != null && t .right != null ) {
28
+ return isSameTree (s .left , t .left ) && isSameTree (s .right , t .right );
29
+ } else if (s .left != null && s .right == null && t .left != null && t .right == null ) {
30
+ return isSameTree (s .left , t .left );
31
+ } else if (s .left == null && s .right != null && t .left == null && t .right != null ) {
32
+ return isSameTree (s .right , t .right );
33
+ }
34
+ }
35
+ return false ;
36
+ }
37
+ }
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for a binary tree node.
3
+ * function TreeNode(val) {
4
+ * this.val = val;
5
+ * this.left = this.right = null;
6
+ * }
7
+ */
8
+ /**
9
+ * @param {TreeNode } s
10
+ * @param {TreeNode } t
11
+ * @return {boolean }
12
+ */
13
+ var isSubtree = function ( s , t ) {
14
+ if ( s === null && t === null ) {
15
+ return true
16
+ } else if ( ( s === null && t !== null ) || ( s !== null && t === null ) ) {
17
+ return false
18
+ } else if ( isSameTree ( s , t ) ) {
19
+ return true
20
+ } else {
21
+ return isSubtree ( s . left , t ) || isSubtree ( s . right , t )
22
+ }
23
+ } ;
24
+
25
+ var isSameTree = function ( s , t ) {
26
+ if ( s . val === t . val ) {
27
+ if ( s . left === null && s . right === null && t . left === null && t . right === null ) {
28
+ return true
29
+ } else if ( s . left !== null && s . right !== null && t . left !== null && t . right !== null ) {
30
+ return isSameTree ( s . left , t . left ) && isSameTree ( s . right , t . right )
31
+ } else if ( s . left !== null && s . right === null && t . left !== null && t . right === null ) {
32
+ return isSameTree ( s . left , t . left )
33
+ } else if ( s . left === null && s . right !== null && t . left === null && t . right !== null ) {
34
+ return isSameTree ( s . right , t . right )
35
+ }
36
+ }
37
+ return false
38
+ }
Original file line number Diff line number Diff line change
1
+ # Definition for a binary tree node.
2
+ # class TreeNode(object):
3
+ # def __init__(self, x):
4
+ # self.val = x
5
+ # self.left = None
6
+ # self.right = None
7
+
8
+ class Solution (object ):
9
+ def isSubtree (self , s , t ):
10
+ """
11
+ :type s: TreeNode
12
+ :type t: TreeNode
13
+ :rtype: bool
14
+ """
15
+ if not s and not t :
16
+ return True
17
+ elif (not s and t ) or (s and not t ):
18
+ return False
19
+ elif self .isSameTree (s , t ):
20
+ return True
21
+ else :
22
+ return self .isSubtree (s .left , t ) or self .isSubtree (s .right , t )
23
+
24
+ def isSameTree (self , s , t ):
25
+ if s .val == t .val :
26
+ if not s .left and not s .right and not t .left and not t .right :
27
+ return True
28
+ elif s .left and s .right and t .left and t .right :
29
+ return self .isSameTree (s .left , t .left ) and self .isSameTree (s .right , t .right )
30
+ elif s .left and not s .right and t .left and not t .right :
31
+ return self .isSameTree (s .left , t .left )
32
+ elif not s .left and s .right and not t .left and t .right :
33
+ return self .isSameTree (s .right , t .right )
34
+ return False
You can’t perform that action at this time.
0 commit comments