时间限制:1秒 空间限制:32768K 热度指数:239786
本题知识点: 树
题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
方法:
在遍历树的每个结点的时候,调用函数TreeDepth得到它的左右子树的深度。如果每个结点的左右子树的深度相差都不超过1,则这是一颗平衡的二叉树。
代码如下:
class Solution {
public:
bool IsBalanced_Solution(TreeNode* pRoot) {
if(pRoot==NULL) return true;
int left=TreeDepth(pRoot->left);
int right=TreeDepth(pRoot->right);
int num=abs(left-right);
if(num>1) return false;
return IsBalanced_Solution(pRoot->left)&&IsBalanced_Solution(pRoot->right);
}
private:
int TreeDepth(TreeNode *pRoot){
if(pRoot==NULL) return 0;
int left=TreeDepth(pRoot->left);
int right=TreeDepth(pRoot->right);
return (left>right)?(left+1):(right+1);
}
};