转载一下:

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)