转载一下:
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)