[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:

[LeetCode] 1325. Delete Leaves With a Given Value

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:

[LeetCode] 1325. Delete Leaves With a Given Value

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

Example 3:

[LeetCode] 1325. Delete Leaves With a Given Value

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 题目总结

上一篇:力扣337——打家劫舍 III


下一篇:leetcode 337. 打家劫舍iii