1325. 删除给定值的叶子节点

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/delete-leaves-with-a-given-value
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


注意一点,这里的叶子节点不是绝对的叶子节点,删除之后称为叶子节点的也会认为是叶子节点。

依旧是回溯。进行判断,如果左右子树有数据返回,说明不是该节点不是叶子节点,返回该节点;如果都是null,则需要判断该节点的值,是目标值,则返回null;不是则返回该节点。

    public TreeNode removeLeafNodes(TreeNode root, int target) {

        if(root == null) {
            return null;
        }

        TreeNode left = removeLeafNodes(root.left, target);
        TreeNode right = removeLeafNodes(root.right, target);

        root.left = left;
        root.right = right;
        // 只要有一个是,说明不是叶子节点了。
        if(left != null ||  right != null) {
            return root;
        }
        // 此时都是null
        return root.val == target ? null : root; 


    }
posted @ 2022-02-23 20:52  一颗青菜  阅读(6)  评论(0)    收藏  举报