Leetcode JAVA刷刷站(110)平衡二叉树

一、题目概述

二、思路方向 

       在Java中,判断一个二叉树是否是平衡二叉树,可以通过递归的方式来实现。平衡二叉树的定义是:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都必须是平衡二叉树。

       我们可以通过编写一个辅助函数来计算二叉树的高度,并在计算高度的同时检查是否满足平衡二叉树的条件。

三、代码实现  

class TreeNode {  
    int val;  
    TreeNode left;  
    TreeNode right;  
    TreeNode(int x) { val = x; }  
}  
  
public class Solution {  
    public boolean isBalanced(TreeNode root) {  
        return height(root) != -1;  
    }  
  
    // 计算树的高度,并检查是否为平衡二叉树  
    // 如果不是平衡二叉树,则返回-1;否则返回树的高度  
    private int height(TreeNode node) {  
        if (node == null) {  
            return 0;  
        }  
          
        int leftHeight = height(node.left);  
        if (leftHeight == -1) {  
            // 左子树不是平衡二叉树  
            return -1;  
        }  
          
        int rightHeight = height(node.right);  
        if (rightHeight == -1) {  
            // 右子树不是平衡二叉树  
            return -1;  
        }  
          
        // 检查当前节点是否满足平衡二叉树的条件  
        if (Math.abs(leftHeight - rightHeight) > 1) {  
            return -1;  
        }  
          
        // 返回当前树的高度  
        return Math.max(leftHeight, rightHeight) + 1;  
    }  
  
    public static void main(String[] args) {  
        // 示例用法  
        // 你可以根据需要构建自己的二叉树进行测试  
        TreeNode root = new TreeNode(1);  
        root.left = new TreeNode(2);  
        root.right = new TreeNode(3);  
        root.left.left = new TreeNode(4);  
        root.left.right = new TreeNode(5);  
        root.right.right = new TreeNode(6);  
  
        Solution solution = new Solution();  
        boolean isBalanced = solution.isBalanced(root);  
        System.out.println("Is Balanced? " + isBalanced);  
    }  
}

执行结果: 

四、小结 

       在这个示例中,isBalanced 方法是主要的公共接口,它调用 height 方法来判断二叉树是否平衡。height 方法是一个递归函数,它计算并返回给定节点为根的子树的高度。如果在计算过程中发现任何子树不平衡(即左右子树高度差大于1),则 height 方法会返回 -1,表示整个树不平衡。如果所有子树都平衡,则返回树的高度。最后,isBalanced 方法通过检查 height(root) 是否返回 -1 来判断整棵树是否平衡。

 结语 

一叶浮萍归大海

为人何处不相逢

!!!

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT 青年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值