一、110.平衡二叉树
题目链接:https://leetcode.cn/problems/balanced-binary-tree/
文章链接:https://programmercarl.com/0110.%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE
视频链接:https://www.bilibili.com/video/BV1Ug411S7my/?vd_source=721f65ae0501389782be0dcb48a2c421
// 平衡二叉树
/**
 * 给定一个二叉树,判断它是否是高度平衡的二叉树
 * 本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。
 * 解题思路:后序遍历(递归) 返回值为-1说明不是平衡二叉树
 */
public class BalanceBinaryTree {
    public int getHeight(TreeNode root){
        if (root == null ) return 0;
        //左
        int leftHeight = getHeight(root.left);
        if (leftHeight == -1) {
            return -1;
        }
        //右
        int rightHeight = getHeight(root.right);
        if (rightHeight == -1){
            return -1;
        }
        //中
        int result;
        //左右子树高度差大于1,return -1表示已经不是平衡二叉树
        //其次返回该节点的高度,本身节点的高度1加上左右子树的最大高度就是该节点的高度
        if (Math.abs(rightHeight-leftHeight)>1){
            result =  -1;
        }else {
            result = 1 + Math.max(rightHeight,leftHeight);
        }
        return result;
    }
}
解题思路















![c/c++语言算法技巧汇总/大复习[未完结]](https://img-blog.csdnimg.cn/298596ecb6074414b7c47b3a8c1c0a91.png)




