題目描述:
二叉樹的映象就是二叉樹對稱的二叉樹就是交換每乙個非葉子結點的左子樹指標和右子樹指標 ,如下圖所示,請 寫 出能實現該功能的** 。注意 : 請勿對該樹做任何假設,它不 一定是平衡樹 ,也不 一定有序。
分析與解答:
從上圖可以看出,要實現二叉樹的映象反轉,只需交換二叉樹中所有結點的左右孩子即 可。由於對所有的結點都做了同樣的操作,因此,可以用遞迴的方法來實現,由於需 要呼叫 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 ...