栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【浅刷Java数据结构】LeetCode 110 平衡二叉树

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【浅刷Java数据结构】LeetCode 110 平衡二叉树

链接: LeetCode 110 平衡二叉树

解法1:时间复杂度为O(n^2)

思路:某根节点点的左右子树都是平衡二叉树,并且自己的左右子树的最大高度差小于1,即为平衡二叉树

class Solution {
    public int maxDepth(TreeNode root) {//求以某个结点为根节点的深度
        if(root==null){
            return 0;
        }
        int left=maxDepth(root.left);
        int right=maxDepth(root.right);
        return left>right?left+1:right+1;
    }
    public boolean isBalanced(TreeNode root) {
        if(root==null){
            return true;
        }
        int leftH = maxDepth(root.left);
        int rightH = maxDepth(root.right);
        return Math.abs(leftH-rightH)<=1&&
        isBalanced(root.left)&&
        isBalanced(root.right);
    }
}

解法2:时间复杂度为O(n)

在求高度的时候就进行检查,当其不满足平衡二叉树时,就返回一个负数,单出现一个负数时,说明这棵二叉树就已经不平衡了。

class Solution {
    public int maxDepth(TreeNode root) {
        if(root==null){
            return 0;
        }
        int left=maxDepth(root.left);
        int right=maxDepth(root.right);
        if(left>=0 && right>=0 && Math.abs(left-right)<=1){
            return Math.max(left,right)+1;
        }else{
            return -1;
        }
    }
    public boolean isBalanced(TreeNode root) {
        if(root==null){
            return true;
        }
        return maxDepth(root)>=0;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/927145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号