当前位置: 首页 > news >正文

网站开发帐务处理京东商城网上购物京东超市

网站开发帐务处理,京东商城网上购物京东超市,成都网站开发等项目外包公司,德国网站后缀判断是否是平衡二叉树 题目描述数据范围题解解题思路递归算法代码实现代码解析时间和空间复杂度分析示例示例 1示例 2 总结 ) 题目描述 输入一棵节点数为 n 的二叉树,判断该二叉树是否是平衡二叉树。平衡二叉树定义为: 它是一棵空树。或者它的左右子树…

判断是否是平衡二叉树

    • 题目描述
    • 数据范围
    • 题解
      • 解题思路
      • 递归算法
      • 代码实现
      • 代码解析
      • 时间和空间复杂度分析
      • 示例
        • 示例 1
        • 示例 2
      • 总结

)

题目描述

输入一棵节点数为 n 的二叉树,判断该二叉树是否是平衡二叉树。平衡二叉树定义为:

  1. 它是一棵空树。
  2. 或者它的左右子树的高度差的绝对值不超过1,并且左右子树本身也是平衡二叉树。

平衡二叉树的性质:

  • 空树被认为是平衡二叉树。
  • 每个节点的左右子树高度差不超过1。
    平衡二叉树示例

数据范围

  • n ≤ 100
  • 每个节点的值 val 满足 0 ≤ val ≤ 1000

题解

解题思路

我们可以通过深度优先搜索(DFS)来判断一棵二叉树是否是平衡二叉树。具体步骤如下:

  1. 定义树的高度: 计算任意一个节点的左子树和右子树的高度。
  2. 平衡性判断: 如果某个节点的左右子树的高度差超过1,树就不平衡;否则继续判断该节点的左右子树。
  3. 递归遍历: 对树的每个节点递归地进行平衡性判断。

递归算法

我们可以通过递归来判断二叉树的平衡性,同时在递归过程中计算树的高度。递归的核心思想是:

  • 如果左右子树的高度差超过1,返回 false
  • 否则继续判断左右子树的平衡性。

为了避免重复计算,我们可以在递归时直接返回每个子树的高度。

代码实现

#include <stdbool.h>// 定义二叉树节点结构体
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;
};// 计算树的高度
int height(struct TreeNode* pRoot) {if (pRoot == NULL)return 0;  // 空树高度为0int left = height(pRoot->left);  // 左子树的高度int right = height(pRoot->right);  // 右子树的高度if (left == -1 || right == -1 || abs(left - right) > 1) {return -1;  // 如果左右子树高度差超过1,返回-1,表示不平衡}return 1 + (left > right ? left : right);  // 返回树的高度
}// 判断是否为平衡二叉树
bool IsBalanced_Solution(struct TreeNode* pRoot) {return height(pRoot) != -1;  // 如果高度返回-1,表示不平衡
}

代码解析

  1. height 函数: 计算二叉树的高度,同时判断树是否平衡。

    • 如果当前节点为空,返回高度 0
    • 递归计算左子树和右子树的高度。
    • 如果某个子树的高度差超过1,或者某个子树本身不平衡(返回 -1),就返回 -1 表示树不平衡。
    • 否则,返回当前树的高度。
  2. IsBalanced_Solution 函数: 通过调用 height 函数来判断整棵树是否平衡。如果 height 返回 -1,则说明树不平衡,返回 false;否则返回 true

时间和空间复杂度分析

  • 时间复杂度: O(n)。每个节点只会被访问一次,时间复杂度为 O(n),其中 n 是树的节点数。
  • 空间复杂度: O(h)。递归调用栈的深度是树的高度 h,最坏情况下(例如完全不平衡的树),空间复杂度为 O(n)

示例

示例 1

输入:

{1,2,3,4,5,6,7}

输出:

true
示例 2

输入:

{}

输出:

true

总结

本题通过递归遍历二叉树,计算每个节点的左右子树高度,同时判断左右子树的高度差是否超过1来判断树是否平衡。时间复杂度为 O(n),空间复杂度为 O(h),其中 n 是节点数,h 是树的高度。非常难得是居然一次编译直接成功了,太开心了。题刷百编,其意自现。

http://www.yayakq.cn/news/230880/

相关文章:

  • 网站开发建设流程html5高端网站建设
  • 李笑来做的一个网站城乡住房规划建设局网站
  • 自建网站平台的页面功能重要的网站建设
  • 公司网站建立流程时尚女装网站设计
  • 淮安市淮阴区建设局网站建设网站你认为需要注意
  • 烟台城乡建设住建局网站网站建设首页模板下载
  • 邢台专业网站建设网站推广托管
  • 区块链网站开发价格西塞山区建设局网站
  • 网站黑链怎么做的wordpress运维
  • 松江新桥专业网站建设设计公司资质怎么申请
  • 新建网站怎么做优化中英双语网站
  • 软文营销的特点惠州seo整站优化
  • 唐山市城市建设档案馆网站成都建立网站营销设计
  • cod建站系统查公司的口碑和评价的网站
  • 好发信息网网站建设网页游戏排行榜前十名3d
  • 购物商城网站开发实验报告湖南营销型网站建设案例
  • 响应式网站建设定制企业网站设计中常见的排版类型
  • 网站优化策略多媒体应用设计师怎么报考
  • 网站建设新闻+常识教师网络培训
  • 网站建设都包含哪些内容设计师网名创意
  • qq群推广用什么网站好武安市精品网站开发
  • 苏州建站模板系统win网站建设
  • 女装网站建设项目可行性分析表网站认证空间
  • 宝塔面板做织梦网站网页qq登录保护怎么关闭
  • 做的网站怎么申请软件著作权seo优化工具推荐
  • 深圳坑梓网站建设公司国内公司名字可以做国外网站
  • 东莞快速网站制作哪家强企业网站搜索推广
  • 中文网站建设教程相城建设监理有限公司网站
  • 佛山企业网站建设企业 网站设计
  • 晋城做网站公司wap网站教程