File tree Expand file tree Collapse file tree 1 file changed +69
-0
lines changed
Expand file tree Collapse file tree 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