python實現二叉樹翻轉

2021-09-24 03:26:46 字數 1136 閱讀 8249

題:給定一棵二叉樹,要求輸出其左右翻轉後二叉樹的中序遍歷。

例:

翻轉前: 翻轉後:

1 | 1

/ \ | / \

2 3 | 3 2

/ \ | / \

4 5 | 5 4

思路:

映象翻**只需要遍歷二叉樹,每次訪問乙個結點時,交換其左右孩子,然後遞迴的翻轉左右孩子。

**:

class

node

(object):

def__init__

(self,val=

none

,lchild=

none

,rchild=

none):

self.value=val

self.lchild=lchild

self.rchild=rchild

defmirror

(self,root):if

not root:

return

root.lchild,root.rchild=root.rchild,root.lchild

self.mirror(root.lchild)

self.mirror(root.rchild)

deftin

(self,root):if

not root:

return

self.tin(root.lchild)

print

(root.value)

self.tin(root.rchild)

if __name__ ==

'__main__'

: root = node(

1, node(

2, node(4)

, node(5)

), node(3)

)# root.tin(root)

root.mirror(root)

# 翻轉二叉樹

root.tin(root)

# 中序遍歷

翻轉二叉樹

問題描述 翻轉一棵二叉樹 樣例 1 1 2 3 3 2 4 4 實現思路 從根出發開始操作,如果要操作的節點是空值,則不進行任何操作 否則,交換左右兒子,這裡新建乙個temp變數作為過渡。然後利用遞迴演算法,分別對左右子樹進行處理。實現 definition of treenode class tr...

翻轉二叉樹

invert a binary tree.4 2 7 1 3 6 9to 4 7 2 9 6 3 1 思路 採取先序遍歷,根 左子樹 右子樹,自上而下分別把結點的左子樹和右子樹翻轉,例如,結點4的左子樹2和右子樹7調換4 7 2 6 9 1 3 再依次呼叫inverttree函式傳左子樹和右子樹進去...

翻轉二叉樹

目錄當前節點不為空則交換左右子節點,遞迴非常直觀。func inverttree1 root treenode treenode return root 該方法類似樹的層次遍歷,出隊元素交換左右子節點,當前節點左右不為空則入隊。func inverttree2 root treenode treen...