Skip to content

Commit eed570d

Browse files
authored
Merge pull request #1052 from bus710/week12
[bus710] Week 12
2 parents 106acb9 + 88d5b50 commit eed570d

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

same-tree/bus710.go

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
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+
}

0 commit comments

Comments
 (0)