Fishermen_sail 2022-08-31 15:17 采纳率: 80%
浏览 28
已结题

二叉树的小问题(核心代码没bug,有一个地方比较奇怪)

class Solution {
    public TreeNode pruneTree(TreeNode root) {
        // dfs[root]
        root = dfs(root);
        return root;
    }

    public TreeNode dfs(TreeNode root) {
        if (root != null) {
            root.left = dfs(root.left);
            root.right = dfs(root.right);
            if (root.right == null && root.left == null && root.val == 0) {
                return null;
            }
        } else {
            return null;
        }
        return root;
    }
}

想问一下大家,在pruneTree里,为什么必须root = dfs(root);,直接dfs(root)会有一个测试用例过不了。
[0,null,0,0,0],这个正常是[],但如果我直接dfs(root),答案是[0];而root = dfs(root)会得到正确答案。
首先4个0都是走了if里return null的,但的头节点与其他不同的是,它return后没人接(如果主函数仅仅是dfs[root])。
也就是说最后一个null没人接,所以没删掉头节点?为什么?
题目:

img

img

  • 写回答

2条回答 默认 最新

  • 烟雨龙升 2022-08-31 15:37
    关注

    如果你没有接最后一下,你想一下,你传入的那个root,他的左子树和右子树都被赋为null, 但是根节点本身没动。
    那你输出root时,那不就是原来根节点吗

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月8日
  • 已采纳回答 8月31日
  • 修改了问题 8月31日
  • 创建了问题 8月31日

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?