给出二叉树的根节点 root,树上每个节点都有一个不同的值。
如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合)。
返回森林中的每棵树。你可以按任意顺序组织答案。
示例:
使用递归,转成list,判断当前的点是否应该去掉,如果可以返回null
class Solution {
public List<TreeNode> delNodes(TreeNode root, int[] to_delete) {
List<TreeNode> list = new ArrayList<TreeNode>();
List<Integer> tem = new ArrayList<>();
for (int integer : to_delete) {
tem.add(integer);
}
if(root == null){
return list;
}else {
root = dfs(root,tem, list);
if(root != null){
list.add(root);
}
}
return list;
}
//
public TreeNode dfs(TreeNode root,List <Integer> tem,List<TreeNode> list){
if(root == null){
return null;
}
TreeNode left = dfs(root.left, tem, list);
TreeNode right = dfs(root.right, tem, list);
if(tem.contains(root.val)){
if(left != null){
list.add(left);
}
if(right != null){
list.add(right);
}
return null;
}
root.left = left;
root.right = right;
return root;
}
}