演算法4 用python實現前序中序後續遍歷二叉樹

2021-10-04 16:58:08 字數 2580 閱讀 6804

#建立乙個二叉樹

#宣告乙個二叉樹節點類

#節點中包括:節點值,節點左子樹根節點,節點右子樹根節點,節點父節點

class treenode():

def __init__(self,value=none,leftnode=none,rightnode=none,parentnode=none):

self.val = value

self.leftnode = leftnode

self.rightnode = rightnode

self.parentnode = parentnode

def setleftnode(self,leftnode):

self.leftnode = leftnode

def setrightnode(self,rightnode):

self.rightnode = rightnode

def setparentnode(self,parentnode):

self.parentnode = parentnode

def getleftnode(self):

return self.leftnode

def getrightnode(self):

return self.rightnode

def getparentnode(self):

return self.parentnode

def getvalue(self):

return self.val

#定義根節點以及各個節點

root = treenode(1)

n2 = treenode(2)

n3 = treenode(3)

n4 = treenode(4)

n5 = treenode(5)

n6 = treenode(6)

n7 = treenode(7)

#設定根節點的左右節點

root.setleftnode(n2)

root.setrightnode(n3)

#設定n2節點左右子樹節點和其父節點

n2.setleftnode(n4)

n2.setrightnode(n5)

n2.setparentnode(root)

#設定n3節點左右子樹節點和其父節點

n3.setleftnode(n6)

n3.setrightnode(n7)

n3.setparentnode(root)

#設定n4,n5節點的父節點

n4.setparentnode(n2)

n5.setparentnode(n2)

#設定n6,n7節點的父節點

n6.setparentnode(n3)

n7.setparentnode(n3)

#輸出n2節點值,n2節點左孩子值,n2節點右孩子值,n2節點父節點值

print(str('n2 node value:')+str(n2.getvalue()))

print(str('n2 left child value:')+str(n2.getleftnode().getvalue()))

print(str('n2 right child value:')+str(n2.getrightnode().getvalue()))

print(str('n2 parent node value:')+str(n2.getparentnode().getvalue()))

#前序遍歷二叉樹

def preordervisit(node):

if node == none:

return

print(node.getvalue())

preordervisit(node.getleftnode())

preordervisit(node.getrightnode())

#中序遍歷二叉樹

def inordervisit(node):

if node == none:

return

inordervisit(node.getleftnode())

print(node.getvalue())

inordervisit(node.getrightnode())

#後續遍歷二叉樹

def postordervisit(node):

if node == none:

return

postordervisit(node.getleftnode())

postordervisit(node.getrightnode())

print(node.getvalue())

#呼叫前序,中序,後續遍歷函式輸出遍歷結果

print('preorder visit binary tree:')

preordervisit(root)

print('inorder visit binary tree:')    

inordervisit(root)

print('postorder visit binary tree:')    

postordervisit(root)

用 前序 中序 後序

題目 輸入二叉樹的先序和中序遍歷序列,求後序遍歷。1 輸入樣例 先序 1 2 4 7 3 5 8 9 6 中序 4 7 2 1 8 5 9 3 6 2 輸出樣例 後序 7 4 2 8 9 5 6 3 1 思路 1 利用先序和中序虛擬出樹的影象。2 利用後序遍歷性質,在樹上進行遍歷,輸出。由於 中含有...

用python實現的LZW演算法

以前學習了一下gif的lzw演算法,不過只是學習了一下 見我以前的那篇博文 lzw for gif演算法原理和實現 沒有實踐,也沒有看看效果到底怎麼樣,因為現在zip庫很多,基本上不需要自己寫壓縮演算法了,lzw的壓縮效果也比不上它們。不過最近有個嵌入式系統上的資料記錄需求,希望把執行過程中採集的資...

用Python實現各種排序演算法

比較相鄰的元素大小,將小的前移,大的後移,就像水中的氣泡一樣,最小的元素經過幾次移動,會最終浮到水面上。def bubble list for i in range len list for j in range 0,len list 1 i if list j list j 1 list j li...