File tree 1 file changed +69
-0
lines changed
1 file changed +69
-0
lines changed Original file line number Diff line number Diff line change
1
+ package hello
2
+
3
+ type TreeNode struct {
4
+ Val int
5
+ Left * TreeNode
6
+ Right * TreeNode
7
+ }
8
+
9
+ func isSameTree (p , q * TreeNode ) bool {
10
+ if p == nil && q == nil {
11
+ return true
12
+ }
13
+
14
+ return checker (p , q )
15
+ }
16
+
17
+ func checker (p , q * TreeNode ) bool {
18
+ if eitherNilChecker (p , q ) {
19
+ return false
20
+ }
21
+
22
+ if p .Val != q .Val {
23
+ return false
24
+ }
25
+
26
+ if ! bothNilChecker (p .Left , q .Left ) {
27
+ re := checker (p .Left , q .Left )
28
+ if ! re {
29
+ return false
30
+ }
31
+ }
32
+ if ! bothNilChecker (p .Right , q .Right ) {
33
+ re := checker (p .Right , q .Right )
34
+ if ! re {
35
+ return false
36
+ }
37
+ }
38
+
39
+ return true
40
+ }
41
+
42
+ func eitherNilChecker (p , q * TreeNode ) bool {
43
+ if p == nil && q != nil {
44
+ return true
45
+ }
46
+ if p != nil && q == nil {
47
+ return true
48
+ }
49
+ if p .Left != nil && q .Left == nil {
50
+ return true
51
+ }
52
+ if p .Left == nil && q .Left != nil {
53
+ return true
54
+ }
55
+ if p .Right != nil && q .Right == nil {
56
+ return true
57
+ }
58
+ if p .Right == nil && q .Right != nil {
59
+ return true
60
+ }
61
+ return false
62
+ }
63
+
64
+ func bothNilChecker (p , q * TreeNode ) bool {
65
+ if p == nil && q == nil {
66
+ return true
67
+ }
68
+ return false
69
+ }
You can’t perform that action at this time.
0 commit comments