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

LeetCode二叉树直径题解代码 4个测试用例失败原因排查

LeetCode二叉树直径题代码调试问题

在解答LeetCode平台算法题《Diameter of a Binary Tree(二叉树的直径)》时,编写的求解代码可正确通过100/104个测试用例,始终无法定位剩余4个测试用例运行失败的原因与代码逻辑缺陷。本次随问题附上题目原文截图、报错用例相关截图,具体实现代码如下:

# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int:
        left_root = root.left   # 根节点的左子节点
        right_root = root.right # 根节点的右子节点
        
        def dfs(root: Optional[TreeNode]) -> int: # 计算节点高度
            if not root:
                return 0
            
            left = dfs(root.left)
            right = dfs(root.right)
            
            return 1 + max(left, right)
        
        left_depth = dfs(left_root) # 计算根节点左右子树深度
        right_depth = dfs(right_root)
        
        return left_depth + right_depth # 返回两侧深度和

代码核心缺陷

代码逻辑存在根本性认知错误:默认二叉树的最长直径一定经过整棵树的根节点。
二叉树直径的定义是树中任意两节点之间最长路径的边数,这条路径完全可能不经过整棵树的根节点,只存在于左子树或者右子树内部。现有代码只计算了根节点左右子树的高度之和,完全没有考虑子树内部存在更长路径的情况,这就是剩余4个测试用例无法通过的根本原因。

举个最简单的反例:
如果树结构是根节点只有左子节点,这个左子节点又分别挂了深度为3的左子树和深度为3的右子树,此时整棵树的直径是6,路径完全在左子树内部,不经过整棵树的根。按照现有代码逻辑,计算出来的结果是根节点左子树高度(4)+右子树高度(0)=4,和正确值存在偏差,自然会报错。

修正方案

在深度优先搜索计算节点高度的过程中,同步维护一个全局最大直径值:

  • 每遍历到一个节点,先递归计算它左右子树的高度
  • 把当前节点的左右子树高度相加,这个值就是以当前节点为最高点的路径长度,和全局最大值比较并更新
  • 递归返回当前节点的高度(1+左右子树高度的最大值),供上层节点计算使用

修正后的可通过代码参考:

class Solution:
    def diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int:
        max_dia = 0
        def dfs(node):
            nonlocal max_dia
            if not node:
                return 0
            left_h = dfs(node.left)
            right_h = dfs(node.right)
            # 更新全局最大直径
            max_dia = max(max_dia, left_h + right_h)
            # 返回当前节点高度
            return 1 + max(left_h, right_h)
        dfs(root)
        return max_dia

注:问题配套附件包含题目原文截图、报错用例截图,可对照上述反例场景查看报错用例的树结构验证逻辑正确性。

内容的提问来源于stack exchange,提问作者mkj4332

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:39:21