题解 | #平衡二叉树#

平衡二叉树

http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222

class Solution {
public:
    bool IsBalanced_Solution(TreeNode* pRoot) {
        int leftDeepth = 0;
        int rightDeepth = 0;
      	//空树直接返回true
        if(pRoot == nullptr) return true;
        //左子树不为空时,判断左子树是否为平衡树,若是平衡树求该子树深度,否则为空
        if(pRoot->left != nullptr){
            if( IsBalanced_Solution(pRoot->left) ) 
            {
                leftDeepth = treeDeepth(pRoot->left);
            }else return false;
        }
        //右子树不为空时,判断右子树是否为平衡树,若是平衡树求该子树深度,否则为空
        if(pRoot->right != nullptr){
            if(IsBalanced_Solution(pRoot->right))
            {
                rightDeepth = treeDeepth(pRoot->right);
            }else return false;
        }
        //判断左右子树高度差是否小于等于1
        if(abs(leftDeepth - rightDeepth)<=1) return true;
        else return false;
    }
    //树的深度
    int treeDeepth(TreeNode * pRoot)
    {
        if(pRoot == nullptr) return 0;
        return ( treeDeepth(pRoot->left) > treeDeepth(pRoot->right)? 
                 treeDeepth(pRoot->left) : treeDeepth(pRoot->right) ) + 1;
    }
};
全部评论

相关推荐

用户64975461947315:这不很正常吗,2个月开实习证明,这个薪资也还算合理,深圳Java好多150不包吃不包住呢,而且也提前和你说了没有转正机会,现在贼多牛马公司骗你说毕业转正,你辛辛苦苦干了半年拿到毕业证,后面和你说没hc了😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务