/**
* 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) {
//后序遍历如果遇到空,说明遍历的节点已经是树的底层了,直接为空
if(root == null){
return root;
}
//递归遍历左子节点,如果左子节点满足左右子树都是0,并且本值为0则左子节点为空,否则为原本的子节点
root.left = pruneTree(root.left);
//递归遍历右子节点,如果右子节点的左右子树都是0或者为空,并且左右子树的值为0则设置为空,如果不是则直接返回本节点
root.right = pruneTree(root.right);
//判断本节点是否满足左右的节点为空,本节点为0
if(root.left == null && root.right == null && root.val == 0){
return null;
}
//如果不满足以上的条件则说明这一枝不能剪
return root;
}
}
二叉树剪枝java实现
最新推荐文章于 2024-08-19 20:00:00 发布