给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过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