Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C语言每日一题(56)平衡二叉树

C语言每日一题(56)平衡二叉树

作者头像
对编程一片赤诚的小吴
发布于 2024-02-14 02:47:21
发布于 2024-02-14 02:47:21
12800
代码可运行
举报
运行总次数:0
代码可运行

力扣网 110 平衡二叉树

题目描述

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

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

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

示例 1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:root = [3,9,20,null,null,15,7]
输出:true

示例 2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:root = [1,2,2,3,3,null,null,4,4]
输出:false

示例 3:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:root = []
输出:true

提示:

  • 树中的节点数在范围 [0, 5000]
  • -104 <= Node.val <= 104

思路分析

知识点:递归、二叉树

思路解析:

找出左右子树的高度,如果高度差出现大于一的情况就返回false,从根节点开始,先从左子树找,再去右子树找

这里为了方便判断左右子树高度大小,利用了假设法,先假设左子树高度最高,后面再判断一下,如果不对就换一下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
 int BinaryTreeHight(struct TreeNode* root)//求二叉树高度
{
	if (root == NULL)
	{
		return 0;
	}
	return fmax(BinaryTreeHight(root->left), BinaryTreeHight(root->right)) + 1;
	
}
bool isBalanced(struct TreeNode* root) {
    if(root==NULL)
    {
        return true;
    }
    int left=BinaryTreeHight(root->left);//保存左子树高度
    int right=BinaryTreeHight(root->right);//保存右子树高度
    int max=left;//假设法
    int min=right;
    if(left<right)
    {
        min=left;
        max=right;
    }
    if((max-min)>1)
    {
        return false;
    }
    return isBalanced(root->left)&&isBalanced(root->right);
    
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【leetcode刷题】T121-平衡二叉树
https://leetcode-cn.com/problems/balanced-binary-tree/
木又AI帮
2019/07/24
4300
【小Y学算法】⚡️每日LeetCode打卡⚡️——30.平衡二叉树
这道题中的平衡二叉树的定义是:二叉树的每个节点的左右子树的高度差的绝对值不超过 11,则二叉树是平衡二叉树。
呆呆敲代码的小Y
2021/09/14
3110
【小Y学算法】⚡️每日LeetCode打卡⚡️——30.平衡二叉树
二叉树的oj题
思路:从根节点开始,递归地对树进行翻转,如果被遍历的节点的左右节点都已经被翻转,那么我们只要翻转左右子树的位置,就可以完成以root为根节点的树的翻转。
用户11039545
2025/01/14
600
LeetCode 平衡二叉树(二叉树)
给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为:
SakuraTears
2022/01/13
3710
LeetCode 平衡二叉树(二叉树)
Leetcod刷题(15)—— 110. 平衡二叉树
解决思路: 1.先写一个能求二叉树深度的方法 2.比较左右子树的深度差是否小于等于1 3.递归求解即可
老马的编程之旅
2022/06/22
1810
Leetcode No.110 平衡二叉树
示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:true
week
2021/05/06
2790
平衡二叉树(C++)
对应我的掘金文章:https://juejin.cn/post/7147319213621788703
GeekLiHua
2025/01/21
730
平衡二叉树(C++)
判断二叉树是否为平衡二叉树
解题思路: 根据二叉树的定义,我们可以递归遍历二叉树的每一个节点来,求出每个节点的左右子树的高度,如果每个节点的左右子树的高度相差不超过1,按照定义,它就是一颗平衡二叉树。
恋喵大鲤鱼
2018/08/03
1.8K0
判断二叉树是否为平衡二叉树
golang刷leetcode 技巧(21)平衡二叉树
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
golangLeetcode
2022/08/02
2060
110. 平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 true 。 示例 2: 给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \ 3 3 / \ 4
张伦聪zhangluncong
2022/10/26
1660
【数据结构与算法 经典例题】判断一颗二叉树是否是平衡二叉树
倔强的石头_
2024/12/06
1860
【数据结构与算法 经典例题】判断一颗二叉树是否是平衡二叉树
LeetCode 110. 平衡二叉树(二叉树高度)
1. 题目 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 true 。 示例 2: 给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \ 3 3 /
Michael阿明
2021/02/19
4980
漫画:二叉树系列 第六讲(平衡二叉树)
今日偷懒,在家忙着码代码,所以就分享一道简单点的题目~在之前的系列中,我们已经学习了二叉树的深度以及DFS,如果不会可以先查看之前的文章。今天我们将对其进行应用,直接看题目:
程序员小浩
2020/03/30
3070
漫画:二叉树系列 第六讲(平衡二叉树)
LeetCode-面试题55-2-平衡二叉树
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
benym
2022/07/14
1980
【Leetcode -110.平衡二叉树 -226.翻转二叉树】
本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
YoungMLet
2024/03/01
1020
【Leetcode -110.平衡二叉树 -226.翻转二叉树】
图解LeetCode——剑指 Offer 55 - II. 判断是否是平衡二叉树
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
爪哇缪斯
2023/05/10
2420
图解LeetCode——剑指 Offer 55 - II. 判断是否是平衡二叉树
​LeetCode刷题实战110:平衡二叉树
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
程序员小猿
2021/01/20
2840
​LeetCode刷题实战110:平衡二叉树
LeetCode 训练场:110. 平衡二叉树
1. 题目 110. 平衡二叉树 2. 描述 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 true 。 示例 2: 给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \ 3 3 /
村雨遥
2022/06/15
1720
平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。
WindRunnerMax
2022/05/06
2520
一天一大 lee(平衡二叉树)难度:简单-Day20200817
题目:: https://leetcode-cn.com/problems/balanced-binary-tree/
前端小书童
2020/09/24
3320
一天一大 lee(平衡二叉树)难度:简单-Day20200817
相关推荐
【leetcode刷题】T121-平衡二叉树
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验