1110. Delete Nodes And Return Forest
Solution
Tree的問題優先用recursive解看看
這題巧妙運用isDeleted 跟 isRoot的關係,去增加list
Set<Integer> deletes = new HashSet<>();
List<TreeNode> list;
public List<TreeNode> delNodes(TreeNode root, int[] to_delete) {
list = new LinkedList<>();
for(int i : to_delete){
deletes.add(i);
}
dfs(root, true);
return list;
}
public TreeNode dfs(TreeNode node, boolean isRoot){
if(node == null) return null;
boolean isDeleted = deletes.contains(node.val);
if(isRoot && !isDeleted) list.add(node);
//若本輪node delete成功,那他的左右節點會成為新的root
node.left = dfs(node.left, isDeleted);
node.right = dfs(node.right, isDeleted);
return isDeleted ? null : node;
}
Last updated
Was this helpful?