先序遍历、中序遍历、后序遍历简介
先序遍历的次序是:如果二叉树不为空,则访问根节点,然后访问左子树,最后访问右子树;否则,程序退出。
中序遍历的次序是:如果二叉树不为空,,先访问左子树,然后访问根节点,最后访问右子树;否则,程序退出。
后序遍历的次序是:如果二叉树不为空,先访问左子树,然后访问右子树,最后访问根节点;否则,程序退出。
如果对数据结构感兴趣,可以查看这篇博文:
执念斩长河专栏数据结构–目录
实验:用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)