平衡的定义如下,已知对于树中的任意一个结点,若其两颗子树的高度差不超过1,则我们称该树平衡。现给定指向树根结点的指针TreeNode* root,请编写函数返回一个bool,表示该二叉树是否平衡。
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Balance {
public:
bool isBalance(TreeNode* root) {
// write code here
dfs(root, 0);
return flag;
}
int dfs(TreeNode* root, int depth){
if(root == 0) return depth;
int ld = dfs(root->left, depth+1);
int rd = dfs(root->right, depth+1);
if(abs(ld - rd) > 1) flag = 0;
return max(ld, rd);
}
bool flag = 1;
};