尝试在本地环境上调试 LeetCode 答案时出错

问题描述 投票:0回答:1

我正在研究LeetCode问题199。二叉树右侧视图:

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

我想在 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个回答
0
投票

LeetCode 容器将使用

ListNode
实例(或
None
)实例(而不是列表)来调用您的函数。

LeetCode 使用的输入是 text,用于描述输入的符号通常类似于 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 = [
                None if value is None else 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
也不应该属于该类,因此两者都应该是无缩进的一步。

© www.soinside.com 2019 - 2024. All rights reserved.