zoukankan      html  css  js  c++  java
  • 判断平衡二叉树 --牛客网

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

    平衡二叉树是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

    本题可以视为上题的进阶版,同样用递归方式做。

    class Solution {
    public:
        bool IsBalanced_Solution(TreeNode* pRoot) {
            if(pRoot==NULL)
                return true;
            int ldep=0,rdep=0;
            if(pRoot->left!=NULL)
                ldep=TreeDepth(pRoot->left);
            if(pRoot->right!=NULL)
                rdep=TreeDepth(pRoot->right);
            bool thist=(ldep>=rdep-1&&ldep<=rdep+1)? true:false;
            return thist&&IsBalanced_Solution(pRoot->left)&&IsBalanced_Solution(pRoot->right);//如果此节点以及左右子节点均为平衡节点,则返回true
        }
        int TreeDepth(TreeNode* pRoot)                                                        //返回这个节点的深度
        {
            int leftdep=1,rightdep=1;
            if(pRoot==NULL)
                return 0;
            if(pRoot->left!=NULL)
            {
                leftdep+=TreeDepth(pRoot->left);  
            }
            if(pRoot->right!=NULL)
            {
                rightdep+=TreeDepth(pRoot->right);
            }    
            return (leftdep>rightdep)? leftdep:rightdep;
        }
    };
  • 相关阅读:
    Ridis学习笔记
    VMware虚拟机安装教程
    Spring中获取Bean的几种方式
    jQuery中的常用事件
    乱码解决
    自动装配
    通配符用法
    Spring
    Spring mvc简单案例
    jdbctemplate
  • 原文地址:https://www.cnblogs.com/puffmoff/p/8561334.html
Copyright © 2011-2022 走看看