1110. 删点成林
给出二叉树的根节点 root,树上每个节点都有一个不同的值。
如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合)。
返回森林中的每棵树。你可以按任意顺序组织答案。
链接
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
|
var delNodes = function(root, to_delete) { const res = [] if (root === null) return res function dfs(node) { if (node === null || to_delete.length === 0) return if (node.left) node.left.parent = node if (node.right) node.right.parent = node dfs(node.left) dfs(node.right) const index = to_delete.indexOf(node.val) if (index !== -1) { to_delete.splice(index, 1) if (node.parent) { if (node.parent.left === node) { node.parent.left = null } else { node.parent.right = null } } if (node.left) { res.push(node.left) } if (node.right) { res.push(node.right) } } else if (root === node) { res.push(node) } }
dfs(root) return res };
|