平衡二叉树

来源:互联网 发布:电影制作软件 编辑:程序博客网 时间:2024/06/06 01:49

题目

输入一棵二叉树,判断该二叉树是否是平衡二叉树。

思路

递归判断左子树有和又子树的高度,绝对值不超过1.

参考代码

class Solution {public:    bool IsBalanced_Solution(TreeNode* pRoot) {        if (!pRoot) return true;        return IsBalanced_Solution(pRoot->left) && IsBalanced_Solution(pRoot->right)            && (abs(getHeight(pRoot->left) - getHeight(pRoot->right)) <= 1 );    }private:    int getHeight(TreeNode* root) {        if (!root) return 0;        int left = getHeight(root->left);        int right = getHeight(root->right);        return left > right ? (left + 1) : (right + 1);    }};

后话

关于平衡二叉树是不是BST,这个好像一直都是有争议的,这里我采用的是在牛客网刷题的标准,在这个里面是不考虑BST,只考虑高度平衡。如果想考虑BST的话,就多加一个判断左子树的最大值和右子树的最小值吧。