Python如何本地运行LeetCode TreeNode二叉树遍历测试代码
本地运行LeetCode二叉树题解的解决方法
错误原因
preorderTraversal方法要求入参为TreeNode类型的二叉树根节点,直接传入列表对象会触发属性访问报错。LeetCode平台内置了自动将层序输入数组转换为二叉树结构的逻辑,本地运行需要自行实现该转换。
解决步骤
- 实现LeetCode格式层序数组转二叉树的工具函数
- 用转换得到的根节点作为参数调用题解方法
完整可运行代码
# Definition for a binary tree node. class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right # 层序数组转二叉树工具函数 def build_tree(nodes): if not nodes: return None root = TreeNode(nodes[0]) queue = [root] i = 1 while queue and i < len(nodes): current = queue.pop(0) if nodes[i] is not None: current.left = TreeNode(nodes[i]) queue.append(current.left) i += 1 if i < len(nodes) and nodes[i] is not None: current.right = TreeNode(nodes[i]) queue.append(current.right) i += 1 return root class Solution(object): def preorderTraversal(self, root): """ :type root: TreeNode :rtype: List[int] """ if root is None: return [] stack, output = [root, ], [] while stack: root = stack.pop() if root is not None: output.append(root.val) if root.right is not None: stack.append(root.right) if root.left is not None: stack.append(root.left) return output # 测试调用 if __name__ == "__main__": input_list = [1, None, 2, 3] root = build_tree(input_list) s = Solution() print(s.preorderTraversal(root)) # 输出 [1, 2, 3]
内容的提问来源于stack exchange,提问作者user6308605
相关产品推荐
相关产品推荐

