判断二叉树是否为高度平衡二叉树

/**

* Definition for binary tree

* struct TreeNode {

*    int val;

*    TreeNode *left;

*    TreeNode *right;

*    TreeNode(int x) : val(x), left(NULL), right(NULL) {}

* };

*/

高度平衡二叉树:

它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树

//任何节点的两个儿子子树的高度最大差别为一,被称为高度平衡树

class Solution {

public:

-------------------------------------------------

  int Count(TreeNode *root){      //计算树的最大深度的函数

      if(root==NULL) return 0;

    return max(Count(root->left),Count(root->right))+1;

  }    

-----------------------------------------------------

    bool isBalanced(TreeNode *root) {    //判断是否是高度平衡二叉树

        if(root==NULL)return true;

        if(abs(Count(root->left)-Count(root->right))>1)return false;

            return isBalanced(root->left)&&isBalanced(root->right);

    }

};

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容