6
6
*/
7
7
public class CheckSubtree {
8
8
9
- /*private static boolean isT2SubtreeofT1(TreeNode t1, TreeNode t2) {
10
-
9
+ private static boolean isT2SubtreeOfT1 (TreeNode t1 , TreeNode t2 ) {
10
+ if (t1 == null ) {
11
+ return false ;
12
+ } else if (t2 == null ) {
13
+ return true ;
14
+ }
15
+
16
+ if (t1 .val == t2 .val ) {
17
+ if (matchTree (t1 , t2 )) {
18
+ return true ;
19
+ }
20
+ }
21
+ return isT2SubtreeOfT1 (t1 .left , t2 ) || isT2SubtreeOfT1 (t1 .right , t2 );
11
22
}
12
-
23
+
13
24
private static boolean matchTree (TreeNode a , TreeNode b ) {
14
- }*/
15
-
25
+ if (a == null && b == null ) {
26
+ return true ;
27
+ } else if (a == null ) {
28
+ return false ;
29
+ } else if (b == null ) {
30
+ return true ;
31
+ } else if (a .val != b .val ) {
32
+ return false ;
33
+ } else {
34
+ return matchTree (a .left , b .left ) && matchTree (a .right , b .right );
35
+ }
36
+ }
37
+
16
38
public static void main (String [] args ) {
39
+ /*
40
+ The BST looks like:
41
+
42
+ 4
43
+ / \
44
+ 2 8
45
+ / \ / \
46
+ 1 3 6 9
47
+ /
48
+ 0
49
+
50
+ */
51
+ TreeNode treeRoot = new TreeNode (4 );
52
+ treeRoot .left = new TreeNode (2 );
53
+ treeRoot .right = new TreeNode (8 );
54
+ treeRoot .left .left = new TreeNode (1 );
55
+ treeRoot .left .right = new TreeNode (3 );
56
+ treeRoot .left .left .left = new TreeNode (0 );
57
+ treeRoot .right .left = new TreeNode (6 );
58
+ treeRoot .right .right = new TreeNode (9 );
59
+ System .out .println (isT2SubtreeOfT1 (treeRoot , treeRoot ));
60
+ System .out .println (isT2SubtreeOfT1 (treeRoot , treeRoot .left ));
61
+ System .out .println (isT2SubtreeOfT1 (treeRoot , treeRoot .right ));
62
+
63
+ /*
64
+ The sub-tree:
65
+
66
+ 8
67
+ /
68
+ 6
69
+ */
70
+ TreeNode treeRoot2 = new TreeNode (8 );
71
+ treeRoot2 .left = new TreeNode (6 );
72
+ System .out .println (isT2SubtreeOfT1 (treeRoot , treeRoot2 ));
73
+
74
+ /*
75
+ The sub-tree:
76
+
77
+ 8
78
+ /
79
+ 9
80
+ */
81
+ TreeNode treeRoot3 = new TreeNode (8 );
82
+ treeRoot3 .left = new TreeNode (9 );
83
+ System .out .println (isT2SubtreeOfT1 (treeRoot , treeRoot3 ));
17
84
}
18
- }
85
+ }
0 commit comments