力扣树相关的题目如何在自己的IDE中构建测试用例

转载一下:

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)

 

posted on 2020-04-17 21:56  WoLi  阅读(897)  评论(0编辑  收藏  举报

导航