我正在研究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]))
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
也不应该属于该类,因此两者都应该是无缩进的一步。