先序遍歷、中序遍歷、後序遍歷簡介
先序遍歷的次序是:如果二叉樹不爲空,則訪問根節點,然後訪問左子樹,最後訪問右子樹;否則,程序退出。
中序遍歷的次序是:如果二叉樹不爲空,,先訪問左子樹,然後訪問根節點,最後訪問右子樹;否則,程序退出。
後序遍歷的次序是:如果二叉樹不爲空,先訪問左子樹,然後訪問右子樹,最後訪問根節點;否則,程序退出。
如果對數據結構感興趣,可以查看這篇博文:
執念斬長河專欄數據結構–目錄
實驗:用python模擬二叉樹
二叉樹原圖
二叉樹實驗效果:
實驗代碼:
# -*- coding:utf-8 -*-
class BTree:
def __init__(self, value):
self.left = None
self.data = value
self.right = None
def insertLeft(self, value):
self.left = BTree(value)
return self.left
def insertRight(self, value):
self.right = BTree(value)
return self.right
def show(self):
print(self.data)
def preorder(node):
if node.data:
node.show()
if node.left:
preorder(node.left)
if node.right:
preorder(node.right)
def inorder(node):
if node.data:
if node.left:
inorder(node.left)
node.show()
if node.right:
inorder(node.right)
def postorder(node):
if node.data:
if node.left:
inorder(node.left)
if node.right:
inorder(node.right)
node.show()
if __name__ == '__main__':
Root = BTree('Root')
A = Root.insertLeft('A')
C = A.insertLeft('C')
D = A.insertRight('D')
F = D.insertLeft('F')
G = D.insertRight('G')
B = Root.insertRight('B')
E = B.insertRight('E')
print('先序遍歷結果如下....')
preorder(Root)
print('中序遍歷結果如下.....')
inorder(Root)
print('後序遍歷結果如下.....')
postorder(Root)