ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第40期:Keep Balance,平衡二叉树!

2021-01-27 23:07:41  阅读:154  来源: 互联网

标签:return int 40 二叉树 平衡 Balance root maxDepth


我准备了 1000 本电子书和计算机各领域高清思维导图 100 张,关注后回复【资源】,即可获取!更可回复【内推】加入 BAT 内推群!

第40期:Keep Balance,平衡二叉树!

在之前的系列中,我们已经学习了二叉树最大深度以及DFS,如果不会可以先查看之前的文章。今天我们将对其进行应用,直接看题目。

01、题目分析


第110题:平衡二叉树


给定一个二叉树,判断它是否是高度平衡的二叉树。


本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。

示例 1:

给定二叉树 [3,9,20,null,null,15,7]

    3
   / \
  9  20
    /  \
   15   7 

返回 true 。

示例 2:

给定二叉树 [1,2,2,3,3,null,null,4,4]

       1
      / \
     2   2
    / \
   3   3
  / \
 4   4

返回 false 。

02、图解分析


首先分析题目,这道题思路很简单,我们想判断一棵树是否满足平衡二叉树,无非就是判断当前结点的两个孩子是否满足平衡,同时两个孩子的高度差是否超过1。那只要我们可以得到高度,再基于高度进行判断即可。

我们先复习一下之前对于树高度的求解:

第40期:Keep Balance,平衡二叉树!
这里唯一要注意的是,当我们判定其中任意一个节点如果不满足平衡二叉树时,那说明整棵树已经不是一颗平衡二叉树,我们可以对其进行阻断,不需要继续递归下去。

另外,需要注意的是,下面这棵并不是平衡二叉树:

第40期:Keep Balance,平衡二叉树!

03、代码分析


根据分析,逻辑非常清晰,顺利得出代码:

func isBalanced(root *TreeNode) bool {
    if root == nil {
        return true
    }
    if !isBalanced(root.Left) || !isBalanced(root.Right) {
        return false
    }
    leftH := maxDepth(root.Left) + 1;     
    rightH := maxDepth(root.Right) + 1;   
    if abs(leftH-rightH) > 1 {
        return false
    }
    return true
}

func maxDepth(root *TreeNode) int {
    if root == nil {
        return 0
    }
    return max(maxDepth(root.Left),maxDepth(root.Right)) + 1
}

func max(a,b int) int {
    if a > b {
        return a
    }
    return b
}

func abs(a int) int {
    if a < 0 {
        return -a
    }
    return a 
}

执行结果:

第40期:Keep Balance,平衡二叉树!

标签:return,int,40,二叉树,平衡,Balance,root,maxDepth
来源: https://blog.51cto.com/15076236/2608511

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有