树(7)判断给定的二叉树是否是平衡的

Q:
在这个问题中,定义平衡二叉树为每个节点的左右两个子树高度差的绝对值不超过1的二叉树;

A:
判断题为布尔值

思想:模块化很重要,堆一个雪人,先知道怎么堆,得需要头、身体、四肢,然后接着定义头是怎么做,身体怎么做,四肢怎么做
——由整体到局部

最外层:判断平衡=》绝对值小于1
次外层:如何知道高度

最外层

balance()

  1. 根节点为null,true;
  2. 根节点不为null,不满足平衡条件,false;
    满足平衡条件,继续以左右节点为根节点,试探下面的二叉树,return实现递归。

次外层

depth()

  1. 根节点为null,0;
  2. 根节点不为0,定义左右子树高度的高度,(这个地方想着可奇怪了,但是想简单点,思路别和其他地方纠缠其实很简单!),左右子树的高度即为根节点的1个高度加上它的左/右子树高度(depth(root.left/right)),最后根据左右子树的高度比较,返回其中的较大值,即为整棵树的高度!

次外层跟随最外层进行递归

左右子树的高度会随着平衡判断的深入而递增!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值