• [LeetCode] 1325. Delete Leaves With a Given Value


    Given a binary tree root and an integer target, delete all the leaf nodes with value target.

    Note that once you delete a leaf node with value target, if it's parent node becomes a leaf node and has the value target, it should also be deleted (you need to continue doing that until you can't).

    Example 1:

    Input: root = [1,2,3,2,null,2,4], target = 2
    Output: [1,null,3,null,4]
    Explanation: Leaf nodes in green with value (target = 2) are removed (Picture in left). 
    After removing, new nodes become leaf nodes with value (target = 2) (Picture in center).
    

    Example 2:

    Input: root = [1,3,3,3,2], target = 3
    Output: [1,3,null,null,2]
    

    Example 3:

    Input: root = [1,2,null,2,null,2], target = 2
    Output: [1]
    Explanation: Leaf nodes in green with value (target = 2) are removed at each step.
    

    Example 4:

    Input: root = [1,1,1], target = 1
    Output: []
    

    Example 5:

    Input: root = [1,2,3], target = 1
    Output: [1,2,3]

    Constraints:

    • 1 <= target <= 1000
    • The given binary tree will have between 1 and 3000 nodes.
    • Each node's value is between [1, 1000].

    删除给定值的叶子节点。

    题意是给一棵二叉树和一个目标值target,请你删除所有node.val == target的叶子节点。

    思路是后序遍历。思路跟814题没有区别,可以放在一起做。

    时间O(n)

    空间O(n)

    Java实现

     1 /**
     2  * Definition for a binary tree node.
     3  * public class TreeNode {
     4  *     int val;
     5  *     TreeNode left;
     6  *     TreeNode right;
     7  *     TreeNode() {}
     8  *     TreeNode(int val) { this.val = val; }
     9  *     TreeNode(int val, TreeNode left, TreeNode right) {
    10  *         this.val = val;
    11  *         this.left = left;
    12  *         this.right = right;
    13  *     }
    14  * }
    15  */
    16 class Solution {
    17     public TreeNode removeLeafNodes(TreeNode root, int target) {
    18         // corner case
    19         if (root == null) {
    20             return null;
    21         }
    22         root.left = removeLeafNodes(root.left, target);
    23         root.right = removeLeafNodes(root.right, target);
    24         if (root.left == null && root.right == null && root.val == target) {
    25             return null;
    26         }
    27         return root;
    28     }
    29 }

    相关题目

    814. Binary Tree Pruning

    1325. Delete Leaves With a Given Value

    LeetCode 题目总结

  • 相关阅读:
    大厂机密!30 个提升团队研发效能的锦囊
    爆肝 200 小时,我做了个编程导航!
    AJAX数据传输之请求与发送
    JS高级技巧之函数节流
    JS实战笔记
    JS获取DOM元素位置与大小
    JS实现快排算法
    构造可重用的Ajax对象
    JS字符串操作总结
    JS常用函数小结
  • 原文地址:https://www.cnblogs.com/cnoodle/p/14071733.html
Copyright © 2020-2023  润新知