二叉树的四种遍历顺序
二叉树的四种遍历顺序:
1.层序遍历:是一层一层往下便利的
2.先序遍历:这个的顺序像递归
3.中序遍历:从下往上从左往右
4.后序遍历:从上往下从左往右
创建节点
class Node:
# 构造函数
def __init__(self ,elem):
self.data = elem
self.lchild = None
self.rchild = None
# 创建树
class Tree:
def __init__(self):
self.root = None
self.queue = []
def add(self ,elem):
#print(self.queue)
node = Node(elem)
if self.root == None:
self.root = node
self.queue.append(self.root)
else:
parent = self.queue[0]
############################################
#补充 非完全二叉树
#print(parent.data)
if elem == None:
if parent.lchild == None:
parent.lchild = -1
return
if parent.rchild == None:
parent.rchild = -1
self.queue.pop(0)
return
###########################################
if parent.lchild == None:
parent.lchild = node
self.queue.append(node)
else:
parent.rchild = node
self.queue.append(node)
#print(parent.data)
#print(node.data)
self.queue.pop(0)
举几个例子:
1.

左图为:
def level_queue(self):
#print(self.queue)
root = self.root
q = [root]
while q != []:
parent = q.pop(0)
if parent == None:
print(None)
continue
print(parent.data)
if parent.lchild == -1:
q.append(None)
if parent.rchild == -1:
q.append(None)
if parent.lchild != None and parent.lchild != -1:
q.append(parent.lchild)
if parent.rchild != None and parent.rchild != -1:
q.append(parent.rchild)
层序:5,2,8,1,4,7,3
# traverse 先序遍历
def front_traverse(self ,parent):
if parent == None:
return
print(parent.data)
if parent.lchild != -1:
self.front_traverse(parent.lchild)
else:
print("None")
if parent.rchild != -1:
self.front_traverse(parent.rchild)
else:
print("None")
先序:5,2,1,4,3,8,7
#中序遍历
def mid_traverse(self ,parent):
if parent == None:
return
if parent.lchild != -1:
self.mid_traverse(parent.lchild)
else:
print("None")
print(parent.data)
if parent.rchild != -1:
self.mid_traverse(parent.rchild)
else:
print("None")
中序:1,2,3,4,5,7,8
# 后序遍历
def later_traverse(self, parent):
if parent == None:
return
if parent.lchild != -1:
self.later_traverse(parent.lchild)
else:
print("None")
if parent.rchild != -1:
self.later_traverse(parent.rchild)
else:
print("None")
print(parent.data)
后序:1,3,4,2,7,8,5
2.

层序:A,B,C,D,E,F,G,H,I,J,K
先序:A,B,D,H,E,I,C,F,J,K,G
中序:D,H,B,E,I,A,J,F,K,C,G
后序:H,D,I,E,B,J,K,F,G,C,A
参考见:https://www.jianshu.com/p/456af5480cee

浙公网安备 33010602011771号