有一棵二叉树,请设计一个算法判断这棵二叉树是否为平衡二叉树。
给定二叉树的根结点root,请返回一个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;
}
};
网友评论