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

数据结构-判断是不是平衡二叉树-java

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

数据结构-判断是不是平衡二叉树-java

1.题目

输入一棵节点数为 n 二叉树,判断该二叉树是否是平衡二叉树。
在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树
平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

2.题解

先求出以每个结点为根的树的高度,然后再判断,其实可以直接再求高度的同时,直接判断即可。
利用后序遍历:左子树、右子树、根节点,可以先递归到叶子节点,然后在回溯的过程中来判断是否满足条件。

3.代码
 public int depth(TreeNode root){
        if(root==null){
            return 0;
        }
        int t = depth(root.left);
        if(t==-1){return -1;}
        int w = depth(root.right);
        
        if(w==-1){return -1;}
        
        int a = Math.abs(t-w);
        if(a>1){return -1;}
        return Math.max(t,w)+1;
        
    }
    
    public boolean IsBalanced_Solution(TreeNode root) {
       return  depth(root)!=-1;
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/532176.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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