814.二叉树剪枝

814.二叉树剪枝
给定二叉树根结点 root ,此外树的每个结点的值要么是 0,要么是 1。

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

( 节点 X 的子树为 X 本身,以及所有 X 的后代。)

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-pruning

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public TreeNode pruneTree(TreeNode root) {
        deleteEmptyTree(root,null);
        return root;
    }
    private void deleteEmptyTree(TreeNode root,TreeNode parent){
        if(root==null) return ;
        deleteEmptyTree(root.left ,root);
        deleteEmptyTree(root.right,root);
        if(root.left==null && root.right==null){
            if(root.val==0 && parent!=null){
                if(root==parent.left)  parent.left=null;
                else parent.right=null;
            }
        }        
    }
}

你可能感兴趣的:(java,二叉树)