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

【数据结构】二叉树的数组表示推导

数组存树的方式

我们按照层数来看

  1. 第0层:1 个节点
  2. 第1层:2 个节点
  3. 第2层:4 个节点
  4. 第3层:8 个节点

    我们可以看出来第iii层一共有2k2^k2k个节点

数组中的位置

我们将这样的树存在数组中,我们就可以根据 层数 和 偏移 来表示数组中的节点位置
kkk层的第mmm个节点:
20+21+...+2(k−1)+m=(2k−1)+m2^0 + 2^1 +...+2^{(k-1)}+m = (2^k-1)+m20+21+...+2(k1)+m=(2k1)+m

子节点位置

从父节点到左子节点之间的节点个数为该层剩余 + 下一层到子节点之前的节点个数,也就是
$ 2^k-m + 2*(m-1) + 1 $
所以子节点的位置为
$ (2^k-1) + m + 2^k-m + 2*(m-1) + 1 = 2^{k+1}-1+2m $
我们将左子节点和右子节点在数组中的索引分别定义为 leftIndexleftIndexleftIndexrightIndexrightIndexrightIndex

我们可以得到
leftIndex=(2k+1−1)+2mleftIndex=(2^{k+1}-1) + 2mleftIndex=(2k+11)+2m
rightIndex=(2k+1)+2mrightIndex = (2^{k+1})+2mrightIndex=(2k+1)+2m

总结

从上面的推到中将父节点位置设为iii,那么就可以看出
leftIndex=(2i+1)leftIndex=(2i+1)leftIndex=(2i+1)
rightIndex=(2i+2)rightIndex=(2i+2)rightIndex=(2i+2)

http://www.dtcms.com/a/426707.html

相关文章:

  • 前端版本更新,错误监控,解决方案 error / unhandledrejection,同步异步错误监控方案
  • 2023 美赛C Predicting Wordle Results(上)
  • 微退休(Micro-retirement)介绍
  • LeetCode热题100(1-7)
  • 想让图片可以在Word和WPS文档中自由移动?修改文字环绕
  • 连云港网站设计北京seo优化分析
  • PostgreSQL WAL 日志发展史 - pg9
  • 企业自有网站全国加盟网站大全
  • 做金融网站看那些素材怎样联系自己建设网站
  • Java的任务调度框架之 Quartz 以及 CronTrigger,CronScheduleBuilder 和 Cron表达式 笔记250930
  • 联想乐享重构智能搜索生态:ThinkPad T14p 2025升级信息首触“企业智能双胞胎”
  • 明远智睿 SSD2351 核心板:64 位四核含税不足 50 元,批量采购新选择
  • Flutter 自定义 View 权威指引
  • AWS | Linux 硬盘挂载综合教程
  • ntdll.pdb 包含查找模块 ntdll.dll 的源文件所需的调试信息
  • 精读C++20设计模式——行为型设计模式:策略模式
  • Spark专题-第三部分:性能监控与实战优化(1)-认识spark ui
  • 汕头网站设计哪家好鞍山制作网站哪家好
  • 电子商务网站建设试卷软件设计师好考吗
  • 【计算机视觉】形态学的去噪
  • 精读C++20设计模式——行为型设计模式:命令模式
  • petalinux 安装Openblass库
  • 织梦播放器网站网站建设简历自我评价
  • 大数据毕业设计选题推荐-基于大数据的全球经济指标数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData
  • Spring Boot 整合 Redisson 实现分布式锁:实战指南
  • 国鑫发布新一代「海擎」服务器 全面兼容国内外主流OAM GPU
  • 百度电商MultiAgent视频生成系统
  • FRP v0.65.0 内网穿透专业指南(SSH + HTTP/HTTPS 一体化配置)
  • UNIX下C语言编程与实践20-UNIX 文件类型判断:stat 结构 st_mode 与文件类型宏的使用实战
  • 电脑网站开发手机上可以打开吗网站建设如何把代码