@@ -5,11 +5,69 @@ def __init__(self, x):
5
5
self .left = None
6
6
self .right = None
7
7
8
+ def FirstBrowse (self , pRoot ):
9
+ result = []
10
+ if pRoot == None :
11
+ return result
12
+ else :
13
+ result .append (pRoot .val )
14
+ result = result + self .FirstBrowse (pRoot .left )
15
+ result = result + self .FirstBrowse (pRoot .right )
16
+ return result
8
17
9
18
class Solution :
10
19
def HasSubtree (self , pRoot1 , pRoot2 ):
11
20
# write code here
12
- if pRoot1 == None or pRoot2 == None :
21
+ if pRoot1 == None or pRoot2 == None :
13
22
return False
23
+ flag = False
24
+ if pRoot1 .val == pRoot2 .val :
25
+ flag = self .doseNode1HasNode2 (pRoot1 , pRoot2 )
14
26
15
-
27
+ if not flag :
28
+ flag = self .HasSubtree (pRoot1 .left , pRoot2 )
29
+
30
+ if not flag :
31
+ flag = self .HasSubtree (pRoot1 .right , pRoot2 )
32
+
33
+ return flag
34
+
35
+ def doseNode1HasNode2 (self , Node1 , Node2 ):
36
+ if Node2 == None :
37
+ return True
38
+ if Node1 == None :
39
+ return False
40
+ if Node1 .val != Node2 .val :
41
+ return False
42
+
43
+ return self .doseNode1HasNode2 (Node1 .left , Node2 .left ) and self .doseNode1HasNode2 (Node1 .right , Node2 .right )
44
+
45
+
46
+ pRoot1 = TreeNode (1 )
47
+ treeNode1 = TreeNode (2 )
48
+ treeNode2 = TreeNode (3 )
49
+ treeNode3 = TreeNode (4 )
50
+ treeNode4 = TreeNode (5 )
51
+ treeNode5 = TreeNode (6 )
52
+ treeNode6 = TreeNode (7 )
53
+ pRoot1 .left = treeNode1
54
+ pRoot1 .right = treeNode2
55
+ treeNode1 .left = treeNode3
56
+ treeNode1 .right = treeNode4
57
+ treeNode2 .left = treeNode5
58
+ treeNode2 .right = treeNode6
59
+
60
+ pRoot2 = TreeNode (1 )
61
+ treeNode1b = TreeNode (2 )
62
+ treeNode2b = TreeNode (3 )
63
+ treeNode3b = TreeNode (4 )
64
+ treeNode4b = TreeNode (6 )
65
+ treeNode5b = TreeNode (7 )
66
+ pRoot2 .left = treeNode1b
67
+ pRoot2 .right = treeNode2b
68
+ treeNode2b .left = treeNode3b
69
+ treeNode2b .right = treeNode4b
70
+ treeNode3b .left = treeNode5b
71
+
72
+ solution = Solution ()
73
+ print solution .HasSubtree (pRoot1 , pRoot2 )
0 commit comments