#include <math.h>
using namespace std;
struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Exam
{
public:
bool isBalanced(TreeNode* root) {
if( root == NULL )
return true;
return TreeHigh(root)?true:false;
}
//return: 0 is not balanced; 1 is balanced;
int TreeHigh(TreeNode* root)
{
if (root) {
int left = TreeHigh(root->left);
int right = TreeHigh(root->right);
if (left == 0 || right == 0) {
return 0;
}
if (fabs(left - right) <= 1) {
return max(left, right) + 1;
}
return 0;
}
return 1;
}
};