二叉树的存储结构

顺序存储结构

完全二叉树:用一组地址连续的 存储单元依次自上而下、自左至右存 储结点元素,即将编号为 i  的结点元 素存储在一维数组中下标为 i –1 的分量中。

一般二叉树:将其每个结点与完 全二叉树上的结点相对照,存储在一 维数组的相应分量中。

最坏情况:树退化为线性后:

我们要把它“变”成这个大家伙来存了:

深度为 k 的且只 有 k 个结点的右单支树需要 长度为2^k-1 的一维数组。

链式存储结构

lchild和rchild都是指向相同结构的指针

在 n 个结点的二叉链表中有 n + 1 个空指针域。

typedef struct BiTNode { // 结点结构TElemType data;struct BiTNode *lchild,*rchild;// 左右孩子指针
} BiTNode, *BiTree;

可以多一条指向父的指针。

遍历二叉树

顺着某一条搜索路径巡访二叉树中的结点,使   得每个结点均被访问一次,而且仅被访问一次

“访问”的含义很广,可以是对结点作各种处理, 如:输出结点的信息、修改结点的数据值等,但要求这种访问不破坏原来的数据结构。

(所以有些题目比如morris遍历、链表后半段反转判断回文等等必须进行完,解题时就算已经得出答案也要遍历完,因为我们不能改变原来的数据结构。)

具体遍历的介绍

https://blog.csdn.net/hebtu666/article/details/82853988

数据结构课上笔记12相关推荐

  1. 数据结构课上笔记11

    满二叉树 (Full binary tree) 除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树. 国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树 ...

  2. 数据结构课上笔记14

    图是一种:   数据元素间存在多对多关系的数据结构   加上一组基本操作构成的抽象数据类型. 图 (Graph) 是一种复杂的非线性数据结构,由顶点集合及顶点间的关系(也称弧或边)集合组成.可以表示为 ...

  3. 数据结构课上笔记10

    树 树的定义:树(Tree)是 n(n≥0)个结点的有限集.若 n=0,称为空树:若 n > 0,则它满足如下两个条件: (1)  有且仅有一个特定的称为根 (Root) 的结点: (2)  其 ...

  4. 数据结构课上笔记15

    图的存储 多重链表:完全模拟图的样子,每个节点内的指针都指向该指向的节点. 节点结构内指针数为度 缺点:浪费空间.不容易操作 数组表示法(邻接矩阵表示法) 可用两个数组存储.其中一个 一维数组存储数据 ...

  5. 数据结构课上笔记13

    树存储结构 父节点表示法 数据域:存放结点本身信息. 双亲域:指示本结点的双亲结点在数组中的位置. 对应的树: /* 树节点的定义 */ #define MAX_TREE_SIZE 100typede ...

  6. R语言课上笔记(第1-4天)

    1. 第一天笔记 推荐的书籍: <R数据科学>推荐–<R语言入门与实践> <R语言与数据分析实战>–韩国人 <R语言数据可视化之美>–绘图 安装注意事项 ...

  7. 【课上笔记】第五章 数组和广义表

    数组和广义表 5.1多维数组 5.1.1数组的逻辑结构 数组是我们熟悉的一种数据结构,可以看作线性表的推广. 数组作为一种数据结构其特点是结构中的元素本身可以是具有某种结构的数据,但属于同一类型.比如 ...

  8. 【课上笔记】第二章 线性表

    第二章 线性表 2.1 线性表的逻辑结构 2.1.1线性表的定义 ​ 线性表是一种线性结构.线性结构的特点是数据元素之间是一种线性关系,数据元素"一个接一个的排列".在一个线性表中 ...

  9. 【课上笔记】第七章 树与森林

    树与森林 7.1树的概念与表示 7.1.1树的定义及相关术语 1.树的定义 ​ 树(Tree)是n(n≥0)个有限数据元素的集合.当n=0时,称这棵树为空树.在一棵非树T中: ​ ⑴有一个特殊的数据元 ...

最新文章

  1. mybatis与php,浅谈mybatis中的#和$的区别
  2. 开放平台架构_三步画出产品业务架构图
  3. [SOJ] 简单哈希
  4. golang 获取 命令行参数
  5. 2008年CCNA第三学期第一单元中文题目(2008-12-21 18:30:01
  6. python计时器代码_用Python写计时器
  7. PHP 显示本机的外网IP
  8. ios 下拉放大 上拉缩小_为啥鞠婧祎发量这么多?截图放大十倍她的“发缝”,网友:真密集...
  9. 系统架构设计师 - 软件架构设计 - 特定领域软件架构DSSA(Domain Speciffic Softwore Architecture)
  10. php的优化参数有哪些,php 参数优化
  11. python输出时间格式_python中日期和时间格式化输出的方法小结_python
  12. nginx 静态文件
  13. Android studio ,Gradle 添加so库
  14. 企业管理:无法量化的工作如何进行绩效考核
  15. Java多维数组length
  16. 浪潮ps9.0 oracle,浪潮ERP-PS V9.1安装手册.doc
  17. 音视频开发-视频基础
  18. win7系统启动到一半停止_win7系统装一半死机的解决方法
  19. Canvas transform浅析
  20. MATLAB画四分之一球封口,在MATLAB中如何将离散点拟合成曲面图

热门文章

  1. java漂亮界面编程_计算机二级之JAVA篇
  2. linux 用脚本建分区,脚本创建磁盘分区
  3. java注册中心nacos_spring-cloud整合nacos做注册中心
  4. c语言链表复数实验,数据结构实验—复数计算器 大神提意见
  5. linux新的API signalfd、timerfd、eventfd使用说明——eventfd
  6. Asterisk权威指南/第三章 安装Asterisk
  7. Linux Kbuild文档 1
  8. apple watch3连android,Apple watch 可以连android手机吗?
  9. 同步与异步系列之二 导读目录
  10. 第十四节:Lambda、linq、SQL的相爱相杀(3)