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 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度