您的位置:首页 > 编程语言 > C语言/C++

剑指offer第三十六题【平衡二叉树】c++实现

2015-12-17 16:43 330 查看
平衡二叉树

参与人数:1452时间限制:1秒空间限制:32768K
通过比例:32.06%
最佳记录:0 ms|8552K(来自  水星哥
 算法知识视频讲解


题目描述

输入一棵二叉树,判断该二叉树是否是平衡二叉树。
平衡二叉树的定义是 左右两子树的高度差不能搞超过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;
}
}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 剑指offer 算法