class Treenode:
def __init__(self,data):
self.data=data
self.left=None
self.right=None
def create_binary_tree(input_list=[]):
if input_list is None or len(input_list)==0:
return None
data=input_list.pop(0) #每次把列表的第一个元素弹出
if data is None:
return None
# 以下是根据前序遍历创建的一个二叉树,后序输入序列时要输入前序序列
node=Treenode(data) #创建一个树结点
node.left=create_binary_tree(input_list)
node.right=create_binary_tree(input_list)
return node # 返回的是第一个结点,即根节点
def pre_order_traversal(node):
if node is None:
return
print(node.data,end=' ') # print函数默认输出换行,加上 end参数可以避免自动换行
pre_order_traversal(node.left)
pre_order_traversal(node.right)
return node
def in_order_traversal(node):
if node is None:
return
in_order_traversal(node.left)
print(node.data,end=' ')
in_order_traversal(node.right)
return node
def post_order_traversal(node):
if node is None:
return
post_order_traversal(node.left)
post_order_traversal(node.right)
print(node.data,end=' ')
return node
my_input_list=list([3,2,9,None,None,10,None,None,8,None,4])
root=create_binary_tree(my_input_list)
print('前序遍历如下:')
pre_order_traversal(root)
print()
print('中序遍历如下:')
in_order_traversal(root)
print()
print('后序遍历如下:')
post_order_traversal(root)
利用递归实现二叉树的前中后序遍历(Python)
最新推荐文章于 2023-07-05 11:30:16 发布