110.平衡二叉树-C语言-创新互联

题目来源:力扣

创新互联建站-专业网站定制、快速模板网站建设、高性价比富蕴网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式富蕴网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖富蕴地区。费用合理售后完善,10余年实体公司更值得信赖。

题目描述:

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:true

示例 2:

输入:root = [1,2,2,3,3,null,null,4,4]
输出:false

示例 3:

输入:root = []
输出:true

代码:

int maxDepth(struct TreeNode* root){
    if(root==NULL){
        return 0;
    }
    int leftDepth=maxDepth(root->left);
    int rightDepth=maxDepth(root->right);
    return leftDepth>rightDepth?leftDepth+1:rightDepth+1;
}

bool isBalanced(struct TreeNode* root){
    if(root==NULL){
        return true;
    }
    int leftDepth=maxDepth(root->left);
    int rightDepth=maxDepth(root->right);
    return abs(leftDepth-rightDepth)<2
    && isBalanced(root->left)
    && isBalanced(root->right);
}

思路:

我们要注意,我们需要判断每一个节点的左右子树是否都符合,而不是单纯的根节点,我们要计算深度,首先写出深度计算的代码,然后我们保存左右子树深度,使用abs函数计算差值,若小于2说明符合,然后递归调用计算root的左子树和右子树,三者用&&的关系,一个不符合直接退出,三个符合结果才符合,这样每一个节点都可以判断到

运行结果:

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

当前名称:110.平衡二叉树-C语言-创新互联
链接分享:https://www.cdcxhl.com/article18/cocsgp.html

成都网站建设公司_创新互联,为您提供网站导航外贸网站建设营销型网站建设电子商务定制网站品牌网站设计

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

外贸网站制作