题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
class Solution {
public:
//DFS,用一个引用参数来传递深度。注意空也是返回true,题目说明太简陋了
bool IsBalanced_Solution(TreeNode* pRoot) {
int deep = 0;
return isBalancedCore(pRoot, deep);
}
private:
bool isBalancedCore(TreeNode* p, int &deep)
{
if (p == nullptr)
{
deep = 0;
return true;
}
int ldeep = 0, rdeep = 0;
bool ret = isBalancedCore(p->left, ldeep) && isBalancedCore(p->right, rdeep);
if (!ret || abs(ldeep - rdeep) > 1)
return false;
deep = max(ldeep, rdeep) + 1;
return true;
}
};