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

深入理解二叉树(2)

数组下标是0的目的是为了方便计算,因为a[i] = *(a+i),数组名是首元素的地址,    所以当i= 0 时a[0] = *(a+0)正好可以表示。

建立大堆和小堆只需要考虑父亲和儿子的大小,不需要考虑兄弟之间的大小关系。

通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统 虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段。

二叉树顺序存储在物理上(虚拟的,看不见摸不着的)是一个数组,在逻辑上是一颗二叉树。 

向下调整的时间复杂度是O(N);向上调整的时间复杂度是O(NlogN);

二叉树链式结构的实现:

任何一颗树都要遵循左子树访问完了再访问右子树

这是前序遍历的流程(采用的是递归算法),右子树也是一样的。

1 2 4 N N N 3 5 N N 6 N N 

下面这些递归的算法需要好好思考一下:

递归回去的时候就是返回到当前的代码行然后进行下一行代码的执行。

递归的方法都是按照上面的来递推的。

相关文章:

  • 【软考-高级】【信息系统项目管理师】【论文基础】采购管理过程输入输出及工具技术的使用方法
  • Lua学习笔记
  • 聊聊Spring AI Alibaba的SentenceSplitter
  • Android ImageView 加载 Base64编码图片
  • 告别手动输入密码:基于SSHPass的自动化文件传输实践告别手动输入密码:基于SSHPass的自动化文件传输实践
  • Mac 平台 字体Unicode范围分析器
  • 【人工智能核心技术全景解读】从机器学习到深度学习实战
  • OCCT中的基础变换
  • OpenCV CPU性能优化
  • 旅游设备生产企业的痛点 质检系统在旅游设备生产企业的应用
  • Java死锁问题全解析:从原理到实战解决方案
  • std::iota(C++)
  • 软件工程之形式化说明技术深度解析
  • 对 Kotlin 中的 data 关键字的理解,相比于普通类有哪些特点?
  • Kotlin Coroutine与Retrofit网络层构建指南
  • C++ - 类和对象 #日期类的实现
  • Go主要里程碑版本及其新增特性
  • 微软推动智能体协同运作:支持 A2A、MCP 协议
  • 学习c语言的链表的概念、操作(另一篇链表的笔记在其他的栏目先看这个)
  • Java网络编程:深入剖析UDP数据报的奥秘与实践
  • 老铺黄金拟配售募资近27亿港元,用于门店拓展扩建及补充流动资金等
  • 港理大研究揭示:塑胶废物潜藏微生物群落或引发生态危机
  • 国家主席习近平抵达莫斯科
  • 人民日报评论:莫让“胖东来们”陷入“棒杀”“捧杀”泥潭
  • 五一假期上海楼市延续向好态势,成交量同比增加36%
  • 什么让翻拍“语文”成为短视频新风潮