-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path1325.delete-leaves-with-a-given-value.java
106 lines (102 loc) · 2.14 KB
/
1325.delete-leaves-with-a-given-value.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/*
* @lc app=leetcode id=1325 lang=java
*
* [1325] Delete Leaves With a Given Value
*
* https://leetcode.com/problems/delete-leaves-with-a-given-value/description/
*
* algorithms
* Medium (72.82%)
* Likes: 227
* Dislikes: 4
* Total Accepted: 14.8K
* Total Submissions: 20.4K
* Testcase Example: '[1,2,3,2,null,2,4]\n2'
*
* 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
* Each tree has at most 3000 nodes.
* Each node's value is between [1, 1000].
*
*/
// @lc code=start
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode removeLeafNodes(TreeNode root, int target) {
if (root == null) return root;
root.left = removeLeafNodes(root.left, target);
root.right = removeLeafNodes(root.right, target);
if (root.left == null && root.right == null && root.val == target) {
return null;
} else {
return root;
}
}
}
// @lc code=end