首先想这个题的普通节点怎么做,首先删除它的子节点的叶子节点,如果返回来时它自己成了叶子节点,则要删除它自己,所以很显然是后序遍历。
然后就是怎么删除自己的问题,要删除自己,就返回null,然后让自己的父节点接到自己时将其删除。
class Solution {
public TreeNode removeLeafNodes(TreeNode root, int target) {
if(root==null)return null;
TreeNode left=removeLeafNodes(root.left,target);
TreeNode right=removeLeafNodes(root.right,target);
if(left==null)root.left=null;
if(right==null)root.right=null;
if(left==null && right==null && root.val==target)return null;
return root;
}
}