- 输入一棵二叉树,判断该二叉树是否是平衡二叉树。
- 求每个节点左右子树深度,绝对差大于1则不是。
class Solution {
public:
int count=0;
int depth=0;
bool IsBalanced_Solution(TreeNode* pRoot) {
//递归算法,求每个节点的左右树高度
//层次遍历
if(pRoot==NULL)
return true;
queue<TreeNode*> que;
TreeNode* p = pRoot;
que.push(p);
while(!que.empty())
{
int left=0,right=0;
p = que.front();
que.pop();
if(p->left!=NULL)
{
depth=0;
count=0;
left=getDep(p->left);
que.push(p->left);
}
if(p->right!=NULL)
{
depth=0;
count=0;
right = getDep(p->right);
que.push(p->right);
}
if(abs(left-right)>1)
return false;
}
return true;
}
int getDep(TreeNode* pRoot)
{
if(pRoot==NULL)
return 0;
if(pRoot)
{
count++;
getDep(pRoot->left);
if(count>depth)
depth=count;
getDep(pRoot->right);
count--;
}
return depth;
}
};