题目名称

给你二叉树的根结点 root ,此外树的每个结点的值要么是 0 ,要么是 1 。

返回移除了所有不包含 1 的子树的原二叉树。

节点 node 的子树为 node 本身加上所有 node 的后代。

示例

输入:root = [1,null,0,0,1]
输出:[1,null,0,null,1]

题解

暴力计算法

本道题主要考察二叉树和递归的使用,针对二叉树的左右节点进行递归操作,一旦有一个节点符合 既没有子节点,且当前节点值为 0,则去除此节点,然后将空值传给父节点,父节点再进行相同判断,直到最后的结果中不包含不包含1的子节点

答案

1
2
3
4
5
6
7
8
9
10
11
12
var pruneTree = function(root) {
if(root.left) {
root.left = pruneTree(root.left)
}
if(root.right) {
root.right = pruneTree(root.right)
}
if(root.val === 0 && !root.left && !root.right) {
return undefined
}
return root
};