给定一个二叉树,判断它是否是高度平衡的二叉树。
    本题中,一棵高度平衡二叉树定义为:

    一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。


    示例 1:
    剑指 Offer 55 - II. 平衡二叉树 - 图1

    1. 输入:root = [3,9,20,null,null,15,7]
    2. 输出:true

    示例 2:
    剑指 Offer 55 - II. 平衡二叉树 - 图2

    输入:root = [1,2,2,3,3,null,null,4,4]
    输出:false
    

    示例 3:

    输入:root = []
    输出:true
    


    提示:

    • 树中的节点数在范围 [0, 5000]
    • -10 <= Node.val <= 10

      /**
      * Definition for a binary tree node.
      * struct TreeNode {
      *     int val;
      *     TreeNode *left;
      *     TreeNode *right;
      *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
      * };
      */
      class Solution {
      public:
        bool isBalanced(TreeNode* root) {
            if(root == NULL) return true;
            int left_depth = depth(root->left);
            int right_depth = depth(root->right);
            if(abs(left_depth - right_depth) > 1){
                return false;
            }
            return isBalanced(root->left) && isBalanced(root->right);
      
        }
        int depth(TreeNode* root){
            if(root == NULL) return 0;
      
            return max(depth(root->left),depth(root->right)) + 1;
        }
      };
      

      ```cpp /**

      • Definition for a binary tree node.
      • struct TreeNode {
      • int val;
      • TreeNode *left;
      • TreeNode *right;
      • TreeNode(int x) : val(x), left(NULL), right(NULL) {}
      • }; / class Solution { public: bool isBalanced(TreeNode root) {
        int depth = 0;
        return isBalanced(root, depth);
        
        } bool isBalanced(TreeNode* root, int& depth){
        if(root == NULL) {
            depth = 0;
            return true;
        }
        int left, right;
        if(isBalanced(root->left, left) && isBalanced(root->right, right)){
            int diff = abs(left - right);
            if(diff <= 1){
                depth = max(left, right) + 1;
                return true;
            }
        }
        return false;
        
        }

    }; ```