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

LeetCode 993:二叉树堂兄弟节点判断代码错误排查求助

排查LeetCode 993题堂兄弟节点判断的错误

针对你遇到的测试用例root = [1,2,3,null,4,null,5],x=5、y=4返回false的问题,大概率是你的height函数或parent函数存在逻辑漏洞,或者最终的判断条件有误,以下是具体排查方向:

可能的错误点

1. 节点深度计算不一致

  • 检查你的height函数对深度的计数规则:比如根节点1的深度是0还是1?如果根节点深度为1,那么4和5的深度应该是3;如果根节点深度为0,则两者深度为2。
  • 确认递归计算深度时,是否正确处理了空节点的情况:比如当节点为空时返回-1还是0?错误的返回值会导致深度少算一层。

2. 父节点查找错误

  • 单独测试parent函数:4的父节点应该是2,5的父节点应该是3。如果函数返回了错误的节点(比如null或其他值),会导致父节点判断错误。
  • 检查递归查找父节点的逻辑:是否在找到目标节点时,正确返回当前节点作为父节点?有没有漏判右子树的情况?

3. 最终判断逻辑错误

  • 确认你是同时满足深度相等和父节点不同两个条件才返回true,有没有误写成||(或)而不是&&(且)?

优化建议:一次遍历同时获取深度和父节点

分开调用height和parent函数容易因为两次遍历的逻辑不一致导致错误,建议用一次DFS遍历同时记录两个节点的父节点和深度,示例代码如下(Python):

def isCousins(root, x, y):
    x_data = None  # 存储(x的父节点, x的深度)
    y_data = None

    def dfs(node, parent, depth):
        nonlocal x_data, y_data
        if not node:
            return
        # 找到目标节点时记录信息
        if node.val == x:
            x_data = (parent, depth)
        if node.val == y:
            y_data = (parent, depth)
        # 递归遍历左右子树
        dfs(node.left, node, depth + 1)
        dfs(node.right, node, depth + 1)

    dfs(root, None, 0)
    # 判断是否满足堂兄弟条件
    return x_data[1] == y_data[1] and x_data[0] != y_data[0]

这个方法只遍历一次树,避免了两次遍历可能出现的逻辑不一致问题,也更容易调试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 02:12:46