平衡二叉树

《剑指offer》刷题笔记。如有更好解法,欢迎留言。

关键字: 树的深度 平衡二叉树

题目描述:

输入一棵二叉树,判断该二叉树是否是平衡二叉树。

思路:

  • 平衡二叉树的特点是左右子树的深度相差不超过1(空树是平衡二叉树)。
  • 所以先算出树的深度,判断以当前结点为根的树是否为平衡二叉树,递归判断左右子树是否为平衡二叉树。
  • 完整代码
function depth(root){
    let lh,rl,h;
    if(root === null)return 0;
    lh = depth(root.left);
    rh = depth(root.right);
    if(lh >= rh){
        h = lh+1;
    }
    else{
        h = rh+1;
    }
    return h;
}
function IsBalanced_Solution(pRoot)
{
    if(pRoot === null)return true;
    let gap = depth(pRoot.left) - depth(pRoot.right);
    if(gap > 1 || gap < -1){
        return false;
    }
    return IsBalanced_Solution(pRoot.left) && IsBalanced_Solution(pRoot.right);
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 导语 平衡二叉树的概念之前已经介绍过,这里不做累述,可以参考树结构-基础,这里主要考虑代码实现和思路原理 平衡二叉...
    曦夫阅读 1,146评论 1 1
  • 一、二叉查找树 1、定义:二叉查找树,也称二叉搜索树,或二叉排序树。其定义也比较简单,要么是一颗空树,要么就是具有...
    小小宁儿阅读 3,329评论 0 9
  • -二叉搜索树 查找问题:静态查找和动态查找,静态查找可以用二分查找-判定树,那么针对动态查找数据如何组织?(树的动...
    Spicy_Crayfish阅读 1,389评论 0 2
  • 最近比较忙,没闲得下时间写简书。小编在之前的分享中有讲过二叉搜索树,如下的两颗树都满足二叉搜索树的条件。 图片...
    ITsCLG阅读 938评论 0 1
  • 树是数据结构里面一个很重要的内容,它的有向无环图的结构,很适合用来做数据排列及检索,很多数据库的存储,都是使用的树...
    chen_kaka阅读 3,342评论 1 12