剑指 Offer II 047. 二叉树剪枝

剑指 Offer II 047. 二叉树剪枝:

题目链接 :剑指 Offer II 047. 二叉树剪枝

题目:
给定一个二叉树 根节点 root ,树的每个节点的值要么是 0,要么是 1。请剪除该二叉树中所有节点的值为 0 的子树。
节点 node 的子树为 node 本身,以及所有 node 的后代。


思路:

1、递归树的根,左,右侧

2、对值不为1的,置为null来达到剪枝目的


AC代码:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
     
    public TreeNode pruneTree(TreeNode root) {
     
        return fun(root)?root:null;
    }
    private boolean fun(TreeNode node)
    {
     
        if(node==null) return false;
       boolean f1=fun(node.left);
       boolean f2=fun(node.right);
       
       if(!f1) node.left=null;
       if(!f2) node.right=null;
        return node.val==1||f1||f2;



    }
}

你可能感兴趣的:(树,剑指offer,剪枝,算法,机器学习)