6.2.1二叉树的性质

1.二叉树

性质:
1.若二叉树的层次从1开始,则在二叉树的第i层最多有2^(i-1)个结点

2.深度为k的二叉树最多有2^k -1个结点 (k>=1)

3.对任何一颗二叉树,如果其叶结点个数为n0,度为2的非叶结点个数为n2,则有 n0=n2+1

4.具有n个结点的完全二叉树的深度为 [log₂n]+1 //log以2为底的n

5.

2.完全二叉树:

特点:
1.只允许最后一层有空缺结点且空缺在右边,即叶子结点只能在层次最大的两层上出现;‘
2.对任一结点,如果其右子树的深度为L,则其左子树的深度必为 L 或 L+1

【总结】:

1.若每层仅有一个结点,则树高h为1025;且其最小树高为 log₂1025 + 1=11,即h在11至1025之间。

2.深度为h的满m叉树共有mh-1个结点,第k层有mk-1个结点。

6.2.2二叉树的存储结构

1.顺序存储结构(数组表示)
n个结点的二叉树,根节点编号为1,其余结点自上到下,自左到右编号,然后将完全二叉树上编号为 i 的结点依次存储在一维数组中下标为 i-1 的元素中。

代码:
#define MAX_TREE_SIZE 100
typedef TElemTypeSqBiTree[MAX_TREE_SIZE];
SqBiTree bt;
:数组表示:没有元素的结点也要空开相应位置


特点:非完全二叉树就会浪费很多存储空间,单支书就是一种极端情况,比如一个深度为k的有k个结点的单支书就需要2^k -1的一维数组

2.链式存储结构

链表中一个结点相应地粗存储二叉树的一个结点

二叉链表:

每个结点包含两个指针域和一个数据域,分别用来储存指向二叉树中结点的左右孩子的指针和结点信息
【图】

代码
tyoedef sttuct BiTNode{TElemType data;
Struct BiTNode*lchild,*rchild;
}BiTNode,*BiTree;
三叉链表:

每个结点包含三个指针域和一个数据域用来指向该结点的双亲结点
【图】

C--数据结构--树的学习相关推荐

  1. 数据结构与算法学习④(哈夫曼树 图 分治回溯和递归)

    数据结构与算法学习④(哈夫曼树 图 回溯和递归 数据结构与算法学习④ 1.哈夫曼树 1.1.相关概念 1.2.哈夫曼树的构建 1.3.哈夫曼编码 1.4.面试题 2.图 2.1.图的相关概念 2.2. ...

  2. 数据结构——树的简单操作集合

    非常多数据结构的书上解说数据机构时都是採用伪代码实现.事实上感觉蛮不直观的.所以对于全部的数据结构操作我都将其用C实现一遍. 树是学习二叉树的基础,也是后面理解B树.B+树的等树的基础,以下就给出树的 ...

  3. 七桥问题c语言程序数据结构,数据结构与算法学习——图论

    什么是图? 在计算机程序设计中,图结构也是一种非常常见的数据结构 但是图论其实是一个非常大的话题 图结构是一种与树结构有些相似的数据结构 图论是数学的一个分支,并且在数学概念上,树是图的一种 它以图为 ...

  4. 数据结构与算法学习⑤(BFS和DFS 贪心算法 二分查找)

    数据结构与算法学习⑤ 数据结构与算法学习⑤ 1.BFS和DFS 1.1.深度优先搜索算法 1.2.广度优先搜索算法 面试实战 102. 二叉树的层序遍历 104. 二叉树的最大深度 515. 在每个树 ...

  5. python tree结构_Python入门篇-数据结构树(tree)篇

    Python入门篇-数据结构树(tree)篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.树概述 1>.树的概念 非线性结构,每个元素可以有多个前躯和后继 树是n(n& ...

  6. 珂朵莉树/ODT 学习笔记

    珂朵莉树/ODT 学习笔记 起源自 CF896C.珂朵莉yyds! 核心思想 把值相同的区间合并成一个结点保存在 set 里面. 用处 骗分.只要是有区间赋值操作的数据结构题都可以用来骗分.在数据随机 ...

  7. mysql 遍历二叉树_数据结构——树与二叉树的遍历

    目录 树 二叉树 二叉树的遍历 总结 参考资料 序 树是学习数据结构的时候非常重要的一个数据结构,尤其是二叉树更为重要.像Java的HashMap 就使用了红黑树,而Mysql的索引就使用到了B+树. ...

  8. 树、二叉树、AVL树,B树基础学习

    树.二叉树.AVL树,B树基础学习 一.树的基本概念 树是一种数据结构,它是由n(n>1)个有限节点组成的一个具有层次关系的集合. 树的基本概念 1.双亲:若有一个结点有子树,那么该结点就称为子 ...

  9. 数据结构与算法学习⑥(动态规划 题解 背包和打家劫舍问题)

    数据结构与算法学习⑥(动态规划 动态规划 1.初识动态规划 1.1.从贪心说起 1.1.1.贪心的特点 1.1.2.贪心的局限性 1.1.3.贪心失效后怎么办 1.1.4.从最优化问题到递归 1.2. ...

  10. c语言将AOE网络的数据写入TXT文档中,数据结构与算法学习辅导及习题详解.张乃孝版-C/C++文档类资源...

    数据结构与算法学习辅导及习题详解.张乃孝版.04年10月 经过几年的努力,我深深体会到,编写这种辅导书要比编写一本湝通教材困难得多. 但愿我的上述理想,在本书中能够得以体现. 本书的组织 本书继承了& ...

最新文章

  1. 腾讯音乐招 iOS 开发, base 深圳,要求:本科、三年、OC,懂音视频开发优先。...
  2. 没有提示_华为手机发出莫名的提示音,打开什么也没有?原来是它们在作怪
  3. 考研计算机专业英语题型,考研英语一题型及分值
  4. 20亿参数+30亿张图像,刷新ImageNet最高分!谷歌大脑华人研究员领衔发布最强Transformer...
  5. iOS动画开发之五——炫酷的粒子效果
  6. 非线性调频 matlab,非线性调频信号
  7. Android MVVM 架构应用实现
  8. android 和 iphone x,在快充方面,iPhone X和iPhone 8系列都落后于Android 旗舰
  9. centos出现磁盘坏掉,怎么修复和检测。
  10. c语言局部变量存在什么区_C语言程序设计变量运用指南 C语言局部变量的存储方式和生存期...
  11. mysql.createpool_Node.js MySQL模块中mysql.createConnection和mysql.createPool有什么区别?
  12. cloudfoundry_在Cloudfoundry上部署RESTful服务
  13. 工厂模式解耦---控制反转
  14. 【BZOJ2751】【codevs1853】容易题,快速幂+逆元
  15. 内存问题排查手段及相关文件介绍
  16. 添加空值_Python基础 | 0x8空值、布尔类型、数字类型
  17. 机器学习笔记(李宏毅 2021/2022)——第一节:基本概念
  18. 夜神设置android版本,使用夜神模拟器调试android app
  19. lbj学习日记 05 一维数组和二维数组
  20. 四子棋 java_JAVA写的四子棋

热门文章

  1. (需求实战_进阶_04)SSM集成RabbitMQ 通配符模式 关键代码讲解、开发、测试
  2. vsftpd常用操作
  3. Dubbo Zookeeper Quick Start
  4. java 生成pdf 乱码_利用java处理fop导出pdf的中文乱码问题解决方案
  5. cmd下pip安装mysql_Windows下使用pip安装mysql-python
  6. 秒后面的单位是什么_单位与国际单位制是如何由来的?
  7. java算法判断链表有没有闭环_前端算法系列之二:数据结构链表、双向链表、闭环链表、有序链表...
  8. 开关 关闭_无论用什么品牌手机,这个开关要关闭,以免耗电又卡顿,抓紧试试...
  9. 周围剃光头顶留长发型_发型改变气质,这话放在石原里美身上也通用啊
  10. python 函数参数传递机制_Python函数参数传递机制(超级详细)