题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
代码:递归方法太简单,这里就写中序非递归算法,也当做练习一下。
class Solution {
public:
bool IsBalanced_Solution(TreeNode* root) {
if(root==NULL)return true;
stack<TreeNode* >s;
TreeNode* p=root;
while(p||!s.empty()){
if(p){
s.push(p);
p=p->left;
}
else{
p=s.top();s.pop();
int l=depth(p->left);
int r=depth(p->right);
if(abs(l-r)>1)return false;
p=p->right;
}
}
return true;
}
int depth(TreeNode* root){
if(root==NULL)return 0;
int l=depth(root->left);
int r=depth(root->right);
return l>r?l+1:r+1;
}
};