學習了通過python實現樹的遍歷(dfs)
自己還原了一下**
#樹 dfs
class treenode(object):
def __init__(self,x) :
self.val = x
self.left = none
self.right = none
if __name__ == '__main__':
#構建樹
t1 = treenode(1)
t2 = treenode(2)
t3 = treenode(3)
t4 = treenode(4)
t5 = treenode(5)
t6 = treenode(6)
t7 = treenode(7)
t8 = treenode(8)
t1.left = t2
t1.right = t3
t2.left = t4
t2.right = t5
t3.left = t6
t3.right = t7
t6.right = t8
#遞迴# 先序 (根 -> 左兒子 -> 右兒子)
def preorderrecusive(root):
if root == none:
return
print(root.val)
preorderrecusive(root.left)
preorderrecusive(root.right)
# 中序 (左兒子 -> 根 -> 右兒子)
def midorderrecusive(root):
if root == none:
return
print(root.val)
preorderrecusive(root.left)
preorderrecusive(root.right)
# 後序 (左兒子 -> 右兒子 -> 根)
def midorderrecusive(root):
if root == none:
return
preorderrecusive(root.left)
preorderrecusive(root.right)
print(root.val)
#非遞迴
#先序 def preorder(root):
if root == none:
return
stack = #用棧儲存資料
tmpnode = root #需要遍歷的根
while tmpnode or stack :
while tmpnode: #將所有左節點入棧,直到左節點為空
print(tmpnode.val)
tmpnode = tmpnode.left
node = stack.pop() #最後乙個左葉
tmpnode = node.right #將右兒子作為子樹遍歷
#中序 def midorder(root):
if root == none:
return
stack =
tmpnode = root
while tmpnode or stack:
while tmpnode:
tmpnode = tmpnode.left
node = stack.pop()
print(node.val)
tmpnode = node.right
#後序 def latorder(root):
if root == none:
return
stack =
tmpnode = root
while tmonode or stack:
while tmpnode:
tmpnode = tmpnode.left
node = stack[-1]
tmpnode = mode.right
if node.right == none :
print(node.val)
node = stack.pop()
while node == stack[-1].right:
print(node.val)
node = stack.pop()
Python學習 第二遍
computer原指專門負責計算的人,後來演變成特指計算編譯,譯為計算機 計算機是能根據一組指令運算元據的機器。五大部件對應硬體 擴充套件 計算機的工作原理a b 程式語言的種類 常用的程式語言 anaconda工具的使用問題 如何利用python程式進行攝氏度和華氏度的轉換 步驟一 分析問題的計算...
Python實現二叉排序樹的建立及各種遍歷
嘗試用python實現樹的操作,避免了c c 複雜的語法及格式,更便於專注理解演算法本身的含義。如下 可直接執行 tree def createtree lis tree dict 用字典儲存二叉排序樹 root lis 0 設定根節點 for x in lis 遍歷節點列表 father root...
劍指offer 學習筆記 二叉搜尋樹的後序遍歷序列
面試題33 二叉搜尋樹的後序遍歷序列。輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷結果 只要存在乙個二叉搜尋樹的後序遍歷結果為它即可 如果是返回true,不是返回false。假設輸入陣列的任意兩個數字都不相同。後序遍歷得到的序列中,最後乙個數字是樹的根節點的值。陣列中前面的數字可分為兩部...