平衡二叉树
题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
平衡二叉树的定义是 左右两子树的高度差不能搞超过1
所以这题就是比较左右子树的高度差,
和求整个树高类似,直接递归
/*struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
int deepthTree(TreeNode * pRoot){
if(pRoot==NULL){
return 0;
}else{
int l=deepthTree(pRoot->left);
int r=deepthTree(pRoot->right);
if(abs(l-r)>=2){
return -1;
}
if(l==-1||r==-1){
return -1;
}
return max(l,r)+1;
}
}
class Solution {
public:
bool IsBalanced_Solution(TreeNode* pRoot) {
if(pRoot==NULL){
return true;
}
if(deepthTree(pRoot)!=-1){
return true;
}else{
return false;
}
}
};