Skip to content

Commit 804bf60

Browse files
committed
Refactored solution 101
1 parent 75b8f85 commit 804bf60

File tree

1 file changed

+8
-37
lines changed

1 file changed

+8
-37
lines changed

leetcode/0101.Symmetric-Tree/101. Symmetric Tree.go

Lines changed: 8 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -16,51 +16,22 @@ type TreeNode = structures.TreeNode
1616
* }
1717
*/
1818

19-
// 解法一 dfs
20-
func isSymmetric(root *TreeNode) bool {
21-
return root == nil || dfs(root.Left, root.Right)
22-
}
23-
24-
func dfs(rootLeft, rootRight *TreeNode) bool {
25-
if rootLeft == nil && rootRight == nil {
19+
func isMirror(left *TreeNode, right *TreeNode) bool {
20+
if left == nil && right == nil {
2621
return true
2722
}
28-
if rootLeft == nil || rootRight == nil {
29-
return false
30-
}
31-
if rootLeft.Val != rootRight.Val {
23+
24+
if left == nil || right == nil {
3225
return false
3326
}
34-
return dfs(rootLeft.Left, rootRight.Right) && dfs(rootLeft.Right, rootRight.Left)
35-
}
3627

37-
// 解法二
38-
func isSymmetric1(root *TreeNode) bool {
39-
if root == nil {
40-
return true
41-
}
42-
return isSameTree(invertTree(root.Left), root.Right)
28+
return (left.Val == right.Val) && isMirror(left.Left, right.Right) && isMirror(left.Right, right.Left)
4329
}
4430

45-
func isSameTree(p *TreeNode, q *TreeNode) bool {
46-
if p == nil && q == nil {
31+
func isSymmetric(root *TreeNode) bool {
32+
if root == nil {
4733
return true
48-
} else if p != nil && q != nil {
49-
if p.Val != q.Val {
50-
return false
51-
}
52-
return isSameTree(p.Left, q.Left) && isSameTree(p.Right, q.Right)
53-
} else {
54-
return false
5534
}
56-
}
5735

58-
func invertTree(root *TreeNode) *TreeNode {
59-
if root == nil {
60-
return nil
61-
}
62-
invertTree(root.Left)
63-
invertTree(root.Right)
64-
root.Left, root.Right = root.Right, root.Left
65-
return root
36+
return isMirror(root.Left, root.Right)
6637
}

0 commit comments

Comments
 (0)