剑指offer37-二叉树的深度/38-平衡二叉树

本文介绍了如何计算二叉树的深度以及判断二叉树是否为平衡二叉树的方法。通过递归算法,首先计算左子树和右子树的深度,再对比两者的高度差来判断平衡性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
遍历 左子树的深度 右子树的深度 较大的深度+1即为二叉树深度

public class Solution {
    public int TreeDepth(TreeNode root) {
        //空树为0
        if(root == null){
            return 0;
        }
        //如果不是空树  是左树和右树较大的+1
        int leftnumber = TreeDepth(root.left);
        int rightnumber = TreeDepth(root.right);
        
        return leftnumber>rightnumber ? leftnumber+1 : rightnumber+1;
    }
}

38题:
在这里插入图片描述
要判断是否是平衡二叉树,首先要计算左右子树的高度,看是否相差为1.然后就是递归了,所有的左右子树。

public class Solution {
    public boolean IsBalanced_Solution(TreeNode root) {
        if(root==null){
            return true;
        }
        int leftHeight = TreeDepth(root.left);
        int rightHeight = TreeDepth(root.right);
        int diff = Math.abs(leftHeight-rightHeight);
        if(diff>1){
            return false;
        }
        return IsBalanced_Solution(root.left)&&IsBalanced_Solution(root.right);
    }
    
    public int TreeDepth(TreeNode root) {
        //空树为0
        if(root == null){
            return 0;
        }
        //如果不是空树  是左树和右树较大的+1
        int leftnumber = TreeDepth(root.left);
        int rightnumber = TreeDepth(root.right);
        return leftnumber>rightnumber ? leftnumber+1 : rightnumber+1;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值