https://blog.csdn.net/sinat_41144773/article/details/89530403
1、树的定义
- n个结点的有限集合
- 有且仅有一个根结点
- 其余结点可分为m个根结点的子树。
2、二叉树
- 每个节点最多拥有两个子节点
- 左子树和右子树是有顺序的不能任意颠倒。
3、二叉树遍历
前序遍历(前根遍历):根——>左——>右
中序遍历(中根遍历):左——>根——>右
后序遍历(后根遍历):左——>右——>根
4、满二叉树
- 高度为h
- 由2^h-1个节点构成的二叉树
5、完全二叉树
-
完全二叉树是由满二叉树而引出来的
-
深度为h,
-
除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数
(即1~h-1层为一个满二叉树), -
第 h 层所有的结点都连续集中在最左边
堆一般都是用完全二叉树来实现的。
【完全二叉树如何储存】
完全二叉树中父亲和儿子之间有着神奇的规律,我们只需用一个一维数组就可以存储完全二叉树。
首先将完全二叉树进行从上到下,从左到右编号。
完全二叉树的一个父结点编号为k,那么它左儿子的编号就是2k,右儿子的编号就是2k+1。如果已知儿子(左儿子或右儿子)的编号是x,那么它父结点的编号就是x/2。
6、堆
堆是什么?堆是一种特殊的完全二叉树。
- 所有父结点都比子结点要小的完全二叉树我们称为<mark>最小堆</mark>。
- 反之,如果所有父结点都比子结点要大,这样的完全二叉树称为<mark>最大堆</mark>。
如下图所示,左边为最小堆,右边为最大堆。
为什么是堆?
归档
- https://blog.csdn.net/qq_41117236/article/details/81029618