【python算法】二叉树的先序中序后序遍历

#coding=utf-8
#二叉树的遍历

#定义节点类
class TreeNode:
	def __init__(self,val,left=None,right=None):
		self.val = val
		self.left = left
		self.right = right
#定义二叉树类
class BinaryTree:
	def __init__(self,root=None):
		self.root = root

#先序排列
def pre_order(reslist,node):
	if node != None:
		reslist.append(node)
		pre_order(reslist,node.left)
		pre_order(reslist,node.right)
	return reslist

#中序
def mid_order(reslist,node):
	if node != None:
		mid_order(reslist,node.left)
		reslist.append(node)
		mid_order(reslist,node.right)
	return reslist

#后序
def post_order(reslist,node):
	if node != None:
		mid_order(reslist,node.left)	
		mid_order(reslist,node.right)
		reslist.append(node)
	return reslist

if __name__=="__main__":
	node = TreeNode(50)
	node.left =TreeNode(20,left=TreeNode(15),right=TreeNode(30))
	node.right = TreeNode(60,right=TreeNode(70))
	binarytree = BinaryTree(node)
	reslist=[]
	#result= pre_order(reslist,binarytree.root)
	result = mid_order(reslist,binarytree.root)
	print result

	for i in result:
		print i.val



猜你喜欢

转载自blog.csdn.net/qq_30758629/article/details/80978705