LC814. 二叉树剪枝

LC814. 二叉树剪枝

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

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

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

示例 1:

img

输入:root = [1,null,0,0,1]
输出:[1,null,0,null,1]
解释:
只有红色节点满足条件“所有不包含 1 的子树”。 右图为返回的答案。

提示:

  • 树中节点的数目在范围 [1, 200]
  • Node.val01

题解

深度优先搜索,判断子树是否含有1即可

class Solution {
    public TreeNode pruneTree(TreeNode root) {
        return containOne(root)?root:null;
    }
    public boolean containOne(TreeNode root){
        if(root == null) return false;

        boolean left = containOne(root.left);
        boolean right = containOne(root.right);

        if(left == false) root.left = null;
        if(right == false) root.right = null;

        return root.val==1||left||right;
    }
}
posted @ 2022-04-25 18:10  州牧  阅读(33)  评论(0)    收藏  举报