問題**:對稱二叉樹
問題描述:給定乙個二叉樹,檢查它是否是映象對稱的。
比如,下面這個二叉樹是映象對稱的;1/
2 2/ \ /
3 4 4 3
而這個二叉樹則不是映象對稱的。1/
2 2\
3 3例子:
輸入:[1,2,2,3,4,4,3]
輸出:true
思路:映象對稱意味著左子樹與右子樹映象對稱,在遍歷左子樹或者右子樹過程中,我們比較映象節點即可
class
solution
:def
issymmetric
(self, root: treenode)
->
bool
:# 如果該二叉樹為空樹,則返回true
if root ==
none
:return
true
# 如果該二叉樹非空,判斷是否映象
defismirror
(root1, root2):if
(root1 ==
none
)and
(root2 ==
none):
return
true
if(root1 ==
none)or
(root2 ==
none):
return
false
return
(root1.val == root2.val)
and ismirror(root1.left, root2.right)
and ismirror(root1.right, root2.left)
return ismirror(root.left, root.right)
class
solution
:def
issymmetric
(self, root: treenode)
->
bool
:# 二叉樹為空
if root ==
none
:return
true
# 二叉樹非空
defismirror
(root1, root2)
: queue =
while queue:
temp1 = queue.pop(0)
temp2 = queue.pop(0)
if(temp1 ==
none
)and
(temp2 ==
none):
continue
if(temp1 ==
none)or
(temp2 ==
none):
return
false
if temp1.val != temp2.val:
return
false
return
true
return ismirror(root.left, root.right)
二叉樹層次遍歷 廣度遍歷和深度遍歷
問題 二叉樹層次遍歷 問題描述 給定乙個二叉樹,返回其按層次遍歷的節點值。即逐層地,從左到右訪問所有節點 例子 給定二叉樹 3,9,20,null,null,15,7 3 920 157返回其層次遍歷結果 3 9 20 15,7 思路 廣度遍歷和深度遍歷。與一般的廣度遍歷不同的是,每次遍歷都將que...
廣度遍歷二叉樹和深度遍歷二叉樹演算法
二叉樹演算法基本和遞迴有關,前中後序演算法就不提了,主要看一下深度優先遍歷和廣度優先遍歷。實現這2種遍歷需要借助棧或者佇列來儲存中間結果,原因是遍歷過程出現了回溯。1 筆試題 廣度遍歷二叉樹 深度遍歷二叉樹 23 include4 include5 include6 7using namespace...
二叉樹的深度優先遍歷與廣度優先遍歷
深度優先搜尋演算法 depth first search 是搜尋演算法的一種。是沿著樹的深度遍歷樹的節點,盡可能深的搜尋樹的分支。當節點v的所有邊都己被探尋過,搜尋將回溯到發現節點v的那條邊的起始節點。這一過程一直進行到已發現從源節點可達的所有節點為止。如果還存在未被發現的節點,則選擇其中乙個作為源...