Q:
在这个问题中,定义平衡二叉树为每个节点的左右两个子树高度差的绝对值不超过1的二叉树;
A:
判断题为布尔值
思想:模块化很重要,堆一个雪人,先知道怎么堆,得需要头、身体、四肢,然后接着定义头是怎么做,身体怎么做,四肢怎么做
——由整体到局部
最外层:判断平衡=》绝对值小于1
次外层:如何知道高度
平衡二叉树判断
最外层
balance()
- 根节点为null,true;
- 根节点不为null,不满足平衡条件,false;
满足平衡条件,继续以左右节点为根节点,试探下面的二叉树,return实现递归。
次外层
depth()
- 根节点为null,0;
- 根节点不为0,定义左右子树高度的高度,(这个地方想着可奇怪了,但是想简单点,思路别和其他地方纠缠其实很简单!),左右子树的高度即为根节点的1个高度加上它的左/右子树高度(depth(root.left/right)),最后根据左右子树的高度比较,返回其中的较大值,即为整棵树的高度!
次外层跟随最外层进行递归
左右子树的高度会随着平衡判断的深入而递增!