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

#二叉树/分解问题

814. 二叉树剪枝

分解问题的思路

  • 这道题的难点在于要一直剪枝
    • 直到没有值为 0 的叶子节点为止
    • 只有从后序遍历位置自底向上处理才能获得最高的效率

分解问题,递归很巧妙吧

var pruneTree = function (root) {
    if (!root) return null;
    root.left = pruneTree(root.left);
    root.right = pruneTree(root.right);
    // 后序遍历位置
    // 判断自己是否是值为 0 的叶子节点
    if (root.val === 0 && root.left === null && root.right === null) {
        // 返回值会被父节点接收,相当于把自己删掉了
        return null;
    }
    // 如果不是,正常返回
    return root;
};