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语言-创新互联
标题URL:http://myzitong.com/article/cocsgp.html