转载一下:
https://www.jianshu.com/p/b4757b543aa8
我自己最常用的是树结构的构建过程,包括两部分:
1、结构体
'''
树的数据结构
'''
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
2、使用list创建树:
def create_tree(nodes):
"""
根据列表构建一棵二叉树
:param nodes: 层次遍历序列
:return: 二叉树的根节点
"""
def helper(node, i): # 用列表递归创建二叉树,
if i < len(nodes): # 当下标索引满足条件时
if nodes[i] in ['#', None]: # 如果列表中下标为i的结点为空
return None # 返回None
else:
node = TreeNode(nodes[i]) # 构建当前结点
node.left = helper(node.left, 2 * i + 1) # 构建左子树,通过下标查找
node.right = helper(node.right, 2 * i + 2) # 构建右子树,通过下标查找
return node # 返回根节点为下标为i的元素的子树
return node # 返回根节点
root = TreeNode(0) # 临时结点
root = helper(root, 0) # 建立树
return root # 返回树的根节点
列表中的数据的顺序与层序遍历的结果相同。
3、调用上述函数create_tree(nodes)
创建树,并将返回的根节点保存在root中:
lst = [5,1,4,None,None,3,6]
root = create_tree(lst)
如果创建一个节点实例,代码如下:
a, b = TreeNode(1), TreeNode(3)