110题:平衡二叉树

这篇博客探讨了如何判断一个二叉树是否为高度平衡的二叉树,定义为节点的左右子树高度差的绝对值不超过1。通过深度值作为判断依据,采用递归函数getDepth从叶子节点开始计算,对于空节点返回0,叶子节点返回1,非叶子节点则根据左右子树深度判断。若左右子树深度差大于1或中途出现失衡,则返回-1表示失衡,否则返回较大深度+1。
摘要由CSDN通过智能技术生成

给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。
https://leetcode-cn.com/problems/balanced-binary-tree/

深度值是一个很好地反映子树是否失衡的量。设当深度值为-1时,二叉树失衡。
getDepth递归函数 :从叶子节点开始计算深度。计算非叶子节点的左右子树深度,如果相差值大于1,则返回-1表示失衡。
该函数的具体逻辑为:

  • 首先节点如果为空,直接返回深度。(可以理解为空子树深度为0)
  • 如果是叶子节点,返回深度+1,即1。(由于“归”的起点是叶子,最外层调用传参的深度是0,所以叶子节点作为参数时的返回值总是1)
  • 不是叶子节点,则递归调用getDepth函数计算左右子树的深度。
  • 如果左右子树中途出现失衡(得到深度值为-1),或者左右子树深度差大于1(说明在该节点失衡),则直接返回-1。
  • 如果上述情况都没出现,正常返回左右子树深度中较大的一个值+1,作为调用者的参考。
class Solution {
   
    public int max(int a,int b){
   
	    return a > b 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值