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
1and3000nodes. - Each node's value is between
[1, 1000].
---------------
直接写递归代码就完事了,老想写个非递归,比较麻烦:
class Solution:
def removeLeafNodes(self, root: TreeNode, target: int) -> TreeNode:
def remove(root):
if root == None:
return None
root.left = remove(root.left)
root.right = remove(root.right)
if (root.left == None and root.right == None and root.val == target):
return None
else:
return root
return remove(root)

该博客介绍了如何使用递归方法删除给定二叉树中所有值为目标值的叶子节点。当删除叶子节点后,其父节点如果也变成叶子节点且值等于目标值,则继续删除,直到无法再删除。示例展示了不同情况下的删除过程,包括完全删除整棵树或保留部分结构。
1009

被折叠的 条评论
为什么被折叠?



