python實現對二叉樹進行映象反轉

2021-10-08 16:50:00 字數 1605 閱讀 2901

題目描述:

二叉樹的映象就是二叉樹對稱的二叉樹就是交換每乙個非葉子結點的左子樹指標和右子樹指標 ,如下圖所示,請 寫 出能實現該功能的** 。注意 : 請勿對該樹做任何假設,它不 一定是平衡樹 ,也不 一定有序。

分析與解答:

從上圖可以看出,要實現二叉樹的映象反轉,只需交換二叉樹中所有結點的左右孩子即 可。由於對所有的結點都做了同樣的操作,因此,可以用遞迴的方法來實現,由於需 要呼叫 printtreelayer層序列印 二叉樹,這種方法中使用了佇列來實現,實現**如下:

from collections import deque

class bitnode:

def __init__(self):

self.data=none

self.lchild=none

self.rchild=none

def fun(root):

if not root:

return none

if root.lchild or root.rchild:

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

fun(root.lchild)

fun(root.rchild)

def arraytotree(arr,start,end):

root=none

if end>=start:

root=bitnode()

mid=(start+end+1)//2

root.data=arr[mid]

root.lchild=arraytotree(arr,start,mid-1)

root.rchild=arraytotree(arr,mid+1,end)

else:

root=none

return root

def printtree(root):

if root==none:

return

queue=deque()

while len(queue)>0:

p=queue.popleft()

print(p.data)

if p.lchild!=none:

if p.rchild!=none:

if __name__=='__main__':

arr=[1,2,3,4,5,6,7]

root=arraytotree(arr,0,len(arr)-1)

print('二叉樹的層次遍歷結果')

printtree(root)

print('\n')

fun(root)

print('反轉後的二叉樹層次遍歷的結果')

printtree(root)

二叉樹的層次遍歷結果42

6135

7反轉後的二叉樹層次遍歷的結果46

2753

1

python實現二叉樹

初學python,需要實現乙個決策樹,首先實踐一下利用python實現乙個二叉樹資料結構。建樹的時候做了處理,保證建立的二叉樹是平衡二叉樹。coding utf 8 from collections import deque class node def init self,val,left non...

python 二叉樹查詢 Python二叉樹搜尋

stack depth is initialised to 0 def find in tree node,find condition,stack depth assert stack depth max stack depth deeper than max depth stack depth ...

python實現平衡二叉樹 平衡二叉樹python

stack depth is initialised to 0 def find in tree node,find condition,stack depth assert stack depth max stack depth deeper than max depth stack depth ...