时间限制:1秒空间限制:32768K热度指数:6833
**算法知识视频讲解
题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
题解:判断是否为平衡二叉树的条件是左孩子的高度与右孩子的高度相差至少为2时就不平衡,否则平衡,所以定义一个getheight函数来获得结点的高度,然后进行递归判断是否为平衡二叉树即可
注意当传入的结点为空时则为平衡二叉树,因为此时遍历完一条边,需要计算高度来判断是否为平衡二叉树,所以需要返回true.
代码如下:
class Solution {
public:
int getHeight(TreeNode* pRoot){
if(pRoot==NULL)return 0;
int l=getHeight(pRoot->left);
int r=getHeight(pRoot->right);
return l>r?l+1:r+1;
}
bool IsBalanced_Solution(TreeNode* pRoot) {
if(pRoot==NULL)return true;
if(IsBalanced_Solution(pRoot->left)&&IsBalanced_Solution(pRoot->right)){
int l=getHeight(pRoot->left);
int r=getHeight(pRoot->right);
if(l>r&&l-r>=2){
return false;
}else if(r>l&&r-l>=2){
return false;
}else{
return true;
}
}
return false;
}
};