class Solution {
public:
bool isBalanced(TreeNode* root) {
if(root==NULL) return true;
int left = treeDiffer(root->left);cout<<left<<endl;
int right = treeDiffer(root->right);cout<<right<<endl;
if(left==-1 || right==-1) return false;
int differ = left - right;
if(differ>1 || differ<-1) return false;
else{
return true;
}
}
int treeDiffer(TreeNode* root){
if(root==NULL) return 0;
int left = 0;
int right = 0;
if(root->left!=NULL)
left = treeDiffer(root->left);
if(left==-1 ) return -1;
if(root->right!=NULL)
right = treeDiffer(root->right);
if(right==-1) return -1;
int differ = left - right;
if(differ > 1 || differ < -1)
return -1;
cout<<left<<" "<<right<<endl;
return max(left,right)+1;
}
};
public:
bool isBalanced(TreeNode* root) {
if(root==NULL) return true;
int left = treeDiffer(root->left);cout<<left<<endl;
int right = treeDiffer(root->right);cout<<right<<endl;
if(left==-1 || right==-1) return false;
int differ = left - right;
if(differ>1 || differ<-1) return false;
else{
return true;
}
}
int treeDiffer(TreeNode* root){
if(root==NULL) return 0;
int left = 0;
int right = 0;
if(root->left!=NULL)
left = treeDiffer(root->left);
if(left==-1 ) return -1;
if(root->right!=NULL)
right = treeDiffer(root->right);
if(right==-1) return -1;
int differ = left - right;
if(differ > 1 || differ < -1)
return -1;
cout<<left<<" "<<right<<endl;
return max(left,right)+1;
}
};