原題
給定一個二叉樹翻屈,檢查他是不是自己的鏡像(軸對稱)
樣例
1
/ \
2 2
/ \ / \
3 4 4 3
是對稱二叉樹
1
/ \
2 2
\ \
3 3
不是對稱二叉樹
解題思路
- 寫一個helper函數(shù)留荔,遞歸求解虚茶,但注意helper函數(shù)的形參left和right不是指的左兒子和右兒子捅暴。那上面的例子為例婉陷,我們要傳入3帚称,3和4,4
- Divide and Conquer的思路 - 如果
left.left, right.right
和left.right, right.left
都對稱則整棵樹對稱
完整代碼
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def isSymmetric(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
if root:
return self.helper(root.left, root.right)
return True
def helper(self, left, right):
if left is None and right is None:
return True
if left and right and left.val == right.val:
return self.helper(left.left, right.right) and \
self.helper(left.right, right.left)
return False