题解 | #平衡二叉树#

平衡二叉树

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;
    }
};
全部评论

相关推荐

05-19 15:21
已编辑
门头沟学院 Java
白火同学:你才沟通了200,说实话,北上广深杭这里面你连一座城市的互联网公司都没投满呢,更别说还有各种准一线二线城市了。等你沟通突破了三位数,还没结果再考虑转行的事吧。
点赞 评论 收藏
分享
程序员小白条:军人经历可以去考研考公考编,技术对你真没优势,而且年龄问题
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务