Leetcode110| 高度平衡二叉树

这篇博客介绍了如何解决LeetCode第110题——平衡二叉树的问题。作者提供了两种解法,一种是递归方式,通过收集节点的高度和平衡信息来判断;另一种是自底向上的方法,主要关注高度,通过比较左右子节点高度的绝对值来确定是否平衡。在递归解法中,当左、右子树不平衡或者高度差超过1时,整棵树就不平衡。在自底向上解法中,从最底层的节点开始向上,通过比较相邻节点的子树高度判断平衡状态。
摘要由CSDN通过智能技术生成

解法一:我们要什么信息,要完成递归条件的收集,把要的信息都搞到Info里头

第一个信息是高度,我们能用高度来判断是否平衡

第二个信息是是否平衡

开始递归完成信息采集,只有得到左右节点的信息才能判断该节点的信息

递归的base case是节点为null了,空节点当然是平衡的而且高度是0我们把这个信息留存

然后我们收集左节点信息

收集右节点信息

收集到的信息里面有高度这一属性

父节点的高度属性依赖于子节点高度们

如果左数不平衡 或者 右数不平衡 或者 左右高度相差超过了1,那该节点为头节点的树就是不平衡的,把信息收集好返回上一层

class Solution {
     public static class Info{
        public boolean isbalence;
        public int height;
        public Info(boolean b,int h){
            isbalence=b;
            height=h;
        }
    }
    public boolean isBalanced(TreeNode root) {
        return process(root).isbalence;
    }
   
    public static Info process(TreeNode root){
        if(root==null){
            ret
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值