題目描述
實現一個函數,檢查二叉樹是否平衡,平衡的定義如下,對於樹中的任意一個結點,其兩顆子樹的高度差不超過1。
給定指向樹根結點的指針TreeNode* root,請返回一個bool,代表這棵樹是否平衡。
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};*/
int depthTree(TreeNode* root)
{
if (root==NULL)
{
return -1;
}
else
{
int left=depthTree(root->left)+1;
int right=depthTree(root->right)+1;
return left>right?left:right;
}
}
class Balance {
public:
bool isBalance(TreeNode* root) {
if (root==NULL)
{
return -1;
}
int depth_left=depthTree(root->left);
int depth_right=depthTree(root->right);
int diff=depth_left-depth_right;
if (diff>1||diff<-1)
return false;
return isBalance(root->left)&&isBalance(root->right);
}
};