有一棵二叉樹摆屯,請(qǐng)?jiān)O(shè)計(jì)一個(gè)算法判斷這棵二叉樹是否為平衡二叉樹。
給定二叉樹的根結(jié)點(diǎn)root,請(qǐng)返回一個(gè)bool值嚷兔,代表這棵樹是否為平衡二叉樹。
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class CheckBalance {
public:
int get_height(TreeNode* root, int level, bool& res)
{
if(NULL == root){
return level;
}
int lh = get_height(root->left, level+1, res);
if(!res) return level;
int rh = get_height(root->right, level+1, res);
if(!res) return level;
if(abs(lh-rh)>1){
res = false;
}
return lh>rh ? lh : rh;
}
bool check(TreeNode* root) {
// write code here
bool res = true;
get_height(root, 1, res);
return res;
}
};