我是一名小学生,喜欢python。最近在学漫画算法,正好学到了二叉树的历遍,于是尝试自己写了个二叉树的历遍程序。用递归的方法按照从上到下,从左往右的顺序输出节点值。第一次用递归!
#节点类
class TreeNode:
def __init__(self,data):
#节点数据
self.data = data
#左孩子
self.left = None
#右孩子
self.right = None
#生成二叉树
def create_binary_tree(input_list=[]):#输入代表二叉树的列表
#如果是空列表返回None
if input_list is None or len(input_list) == 0:
return None
#删除并返回当前树的根节点
data = input_list.pop(0)
#叶子节点,返回None
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 traversal(node):
#。。。
if node is None:
print(None)
return None
#打印节点值
print(node.data)
#又是递归
traversal(node.left)
traversal(node.right)
#列表格式:按照从上往下,从左往右的顺序键入数值
my_list = list([1,2,3,4,5,None,6])
root = create_binary_tree(my_list)
traversal(root)
'''
输出结果
1
2
3
4
5
None
6
None
None
'''
求指点!