#建立乙個二叉樹
#宣告乙個二叉樹節點類
#節點中包括:節點值,節點左子樹根節點,節點右子樹根節點,節點父節點
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...