zoukankan      html  css  js  c++  java
  • 力扣树相关的题目如何在自己的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)
  • 相关阅读:
    jQuery选择器
    jquery处理json笔记
    观察者模式
    shiro自定义realm
    AysncTask更新progressbar
    android自定义控件
    任务的挂起和激活
    main方法添加2个集合存储图形
    矩形类-内部类刷新
    圆类-内部类多线程刷新
  • 原文地址:https://www.cnblogs.com/liliwang/p/12722729.html
Copyright © 2011-2022 走看看