题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
思路
/*
* 判断是否平衡二叉树,
* 也要判断左右子树是不是平衡二叉树
* 特征是左右子树的深度是不是相差不超过1
* 可以结合求二叉树的深度的算法
*/
class Solution {
public:
bool IsBalanced_Solution(TreeNode* pRoot) {
if(pRoot == NULL) return true;
if(IsBalanced_Solution(pRoot->left) && IsBalanced_Solution(pRoot->right)){
if(abs(treeDepth(pRoot->left) - treeDepth(pRoot->right)) <= 1) return true;
}
return false;
}
int treeDepth(TreeNode* root){
if(root == NULL) return 0;
return max(1 + treeDepth(root->left), 1 + treeDepth(root->right));
}
};