C--数据结构--树的学习
2020-07-14 04:58
204 查看
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 TElemType SqBiTree[MAX_TREE_SIZE]; SqBiTree bt;:数组表示:没有元素的结点也要空开相应位置
特点:非完全二叉树就会浪费很多存储空间,单支书就是一种极端情况,比如一个深度为k的有k个结点的单支书就需要2^k -1的一维数组
2.链式存储结构
链表中一个结点相应地粗存储二叉树的一个结点
二叉链表:每个结点包含两个指针域和一个数据域,分别用来储存指向二叉树中结点的左右孩子的指针和结点信息
【图】
tyoedef sttuct BiTNode{ TElemType data; Struct BiTNode*lchild,*rchild; }BiTNode,*BiTree;三叉链表:
每个结点包含三个指针域和一个数据域用来指向该结点的双亲结点
【图】
相关文章推荐
- 数据结构学习之队列
- 数据结构学习-(一)二叉树
- 【数据结构学习】中缀表达式转后缀表达式
- 数据结构 map的学习
- [学习--数据结构]--计算机科学中的树
- Java学习笔记(数据结构、集合)
- 学习 严蔚敏讲数据结构笔记25
- 郁闷,今天学习数据结构的链表,结果被模板给郁闷住了,动手能力还是要加强
- 数据结构学习之_循环队列
- 一步一步学习数据结构(1)-时间空间复杂度
- 数据结构学习笔记(二) 链表之单链表的基本操作
- 不说再见-to全体学习数据结构同学
- 数据结构学习——树的基本概念
- 数据结构学习笔记---基础篇
- 数据结构学习系列四-顺序栈(c语言实现)
- 数据结构学习——栈
- 数据结构学习笔记-线性表链式存储(C语言实现)
- 数据结构学习笔记之线性结构栈
- 数据结构入门学习笔记-1
- 学习(复习)数据结构的一个好网站