You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:36:03