對稱二叉樹 深度遍歷與廣度遍歷

2021-10-04 05:37:41 字數 1642 閱讀 9380

問題**:對稱二叉樹

問題描述:給定乙個二叉樹,檢查它是否是映象對稱的。

比如,下面這個二叉樹是映象對稱的;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的那條邊的起始節點。這一過程一直進行到已發現從源節點可達的所有節點為止。如果還存在未被發現的節點,則選擇其中乙個作為源...