【问题标题】:How do I make TreeNode from list by Python如何通过 Python 从列表中创建 TreeNode
【发布时间】:2020-03-12 17:30:07
【问题描述】:

最近,我开始学习编程的“leetcode”。有时,我会遇到与 TreeNode 相关的问题。 https://leetcode.com/problems/longest-univalue-path/

我通常在本地运行代码以确保我的代码是否有效。但是这些问题需要我提前准备TreeNode,否则我无法在本地运行。我不知道如何从列表中构建 TreeNode。

我想用 Python 从列表中创建 TreeNode,就像这里一样。

class TreeNode:
     def __init__(self, x):
         self.val = x
         self.left = None
         self.right = None

input: [5,4,5,1,1,5]

output:
TreeNode{val: 5, left: TreeNode{val: 4, left: TreeNode{val: 1, left: None, right: None}, right: TreeNode{val: 1, left: None, right: None}}, right: TreeNode{val: 5, left: TreeNode{val: 5, left: None, right: None}, right: None}}

我知道我们可以确定代码在 leetcode 上是否有效。但是,我认为检查 leetcode 上的代码对我来说很慢。我想在本地运行我的代码。我希望你能帮助我。

【问题讨论】:

  • 在您的输出中,您有 5 个节点:5、4、1、1、5。但是,您的输入中有 6 个节点:5、4、5、1、1、5。是这是一个错字?
  • 我猜输出有 6 个节点。感谢您的反应。
  • 你是对的。这是重复的。谢谢

标签: python treenode


【解决方案1】:

猜猜这是你需要的:

class TreeNode(object):
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None
 
def creatBTree(data, index):
    pNode = None
    if index < len(data):
        if data[index] == None:
            return
        pNode = TreeNode(data[index])
        pNode.left = creatBTree(data, 2 * index + 1) # [1, 3, 7, 15, ...]
        pNode.right = creatBTree(data, 2 * index + 2) # [2, 5, 12, 25, ...]
    return pNode 

假设你正在破解pathSum,通过调用填充树

lst = [5,4,8,11,None,13,4,7,2,None,None,None,1]
root = creatBTree(lst, 0)

【讨论】:

    【解决方案2】:

    查看 LeetCode 的官方解释 https://support.leetcode.com/hc/en-us/articles/360011883654-What-does-1-null-2-3-mean-in-binary-tree-representation-,了解他们如何将二叉树序列化格式化为您在他们的测试用例中看到的那种列表。如果您想在本地针对这些测试用例运行解决方案,您还需要编写一些代码(或者我相信您可以在网上找到一些代码),这些代码将输入序列化列表、构建树并返回树的根TreeNode,因此您可以将其传递给您的 find_longest_univalue_path 函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 2010-12-22
      • 2019-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      相关资源
      最近更新 更多