牛客网剑指offer-平衡二叉树

题目描述

输入一棵二叉树,判断该二叉树是否是平衡二叉树。


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;
    }
};

你可能感兴趣的:(剑指offer)