【问题标题】:Error when trying to debug LeetCode answer on local environment尝试在本地环境中调试 LeetCode 答案时出错
【发布时间】:2023-02-17 00:06:04
【问题描述】:

我正在研究 LeetCode 问题199. Binary Tree Right Side View

给定一棵二叉树的根,想象你自己站在它的右边,返回你可以看到的从上到下排序的节点的值。

我想在我的 IDE 上调试我的代码(我使用 Visual Studio Code)。这应该是可能的,因为我了解它背后的理论,但我不太了解这段代码是如何正常工作的。可以在本地调试吗?

这是我要调试的代码:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
    def rightSideView(root):
        res = [ ]
        if not root :
            return res
        queue = [ root ]
        
        while queue :
            
            for n in range(len(queue)) :# 1
                
                first_val = queue.pop(0)
                print("first val",first_val)
                print("n",n)
                
                if n == 0 :
                    res.append(first_val.val)
                    
                if first_val.right :
                    queue.append(first_val.right)
                    
                if first_val.left :
                    queue.append(first_val.left)
        return res

    print(rightSideView([1,2,3,None,5,None,4]))

【问题讨论】:

    标签: python binary-tree


    【解决方案1】:

    LeetCode 容器将使用 ListNode 实例(或 None)而不是列表的参数调用您的函数。

    LeetCode 使用的输入是文本,并且用于描述输入的符号通常类似于 JSON。 LeetCode 框架读取此文本并首先将其转换为 ListNode 实例,然后再调用您的函数。

    因此,当您想在该平台之外测试您的代码时,您需要自己进行预处理。例如,如果您的输入是 Python 列表,则使用如下函数首先将该列表转换为树 (ListNode):

    
    def makeTree(lst):
        if not lst:
            return
        values = iter(lst)
        root = TreeNode(next(values))
        queue = [root]
        while queue:
            node = queue.pop(0)
            if node:
                children = [
                    value and TreeNode(value)
                    for value in (next(values, None), next(values, None))
                ]
                queue.extend(children)
                node.left, node.right = children
    
        return root
    

    现在您可以像这样运行测试:

    print(rightSideView(makeTree([1,2,3,None,5,None,4])))
    

    请注意,您问题中的代码有一些缩进问题:rightSideView 函数不应该是方法TreeNode 类的。最后的 print 也不应该是那个类的一部分,所以两者都应该不缩进一步。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-04
      • 2019-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多