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