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;
}
}
}
}