請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。
如果一棵二叉樹和它的映象一樣,那麼它是對稱的。
樣例
對於一棵對稱的二叉樹,需要判斷其根節點的左右兩棵子樹是否為映象,
1、左子樹的根節點與右子樹的根節點值相等
2、左子樹根節點的左孩子與右子樹根節點的右孩子互為映象,左子樹根節點的右孩子與右子樹根節點的左孩子互為映象。
因此,需要遍歷子樹的所有節點,故可採用遞迴思想來解出此題。
# 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):
defissymmetric
(self, root)
:"""
:type root: treenode
:rtype: bool
"""ifnot root:
return
true
else
:return self.mirror(root.left, root.right)
defmirror
(self, l, r)
:# 遞迴的終止條件
ifnot l or
not r:
# 兩個都空返回true,任意乙個空返回false
return
not l and
not r
# 遞迴判斷是否互為映象
return l.val == r.val and self.mirror(l.left, r.right)
and self.mirror(l.right, r.left)
AcWing 39 對稱的二叉樹
題目描述 請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。樣例如下圖所示二叉樹 1,2,2,3,4,4,3,null,null,null,null,null,null,null,null 為對稱二叉樹 1 2 2 3 4 4 3 如下圖所示二叉樹 1,2...
39 對稱的二叉樹
請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。樣例如下圖所示二叉樹 1,2,2,3,4,4,3,null,null,null,null,null,null,null,null 為對稱二叉樹 1 2 2 3 4 4 3 如下圖所示二叉樹 1,2,2,nu...
39 對稱的二叉樹
和上一題差不多,上一題是變成映象,這一題是判斷是不是映象。definition for a binary tree node.struct treenode class solution bool dfs treenode p,treenode q else 上面的if else 可以直接寫成如下 ...