平衡二叉树
2019-05-06 本文已影响0人
cherryleechen
时间限制:1秒 空间限制:32768K
题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
我的代码
class Solution {
public:
bool IsBalanced_Solution(TreeNode* pRoot) {
//从上往下判断的话,每次判断父节点时,对应的子节点都会遍历一遍。
//采用从下往上判断,如果是,返回高度值;如果不是,返回-1。
return Helper(pRoot)==-1?false:true;
}
int Helper(TreeNode* pRoot){
if(pRoot==nullptr)
return 0;
int left=Helper(pRoot->left);
if(left==-1)
return -1;
int right=Helper(pRoot->right);
if(right==-1)
return -1;
return abs(left-right)<2?1+max(left,right):-1;
}
};
运行时间:3ms
占用内存:484k