## 二叉树
说明:这是个人笔记,欢迎大家指正,互相学习。感谢大家!
- 节点的度:一个节点含有的子树个数称为该节点的度;
- 叶节点:度为0的节点称为叶节点
- 根节点:没有父节点的节点
- 双亲节点或者父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点
- 孩子节点或子节点:一个节点含有的子节点成为这个节点的孩子节点
- 兄弟节点:具有相同父节点的节点之间互为兄弟节点
- 树的度:一棵树中,最大的节点度称为树的度
- 树的高度和深度:树具有的层次
- 堂兄弟节点:双亲在同一层的节点互为兄弟结点(同一个爷爷)
- 节点的祖先:从根到该节点所经分支上的所有节点;
- 子孙:以某节点为根的子树中任一节点都称为该节点的子孙。
- 森林:由m棵互不相交的树的集合称为森林;
概念:
二叉树(二分树),有限的结点集合,可以为空,或者有一个跟结点和两个乎不相交的左子树和右字数组成
优点:
结构简单,存储效率高,运算算法实现简单。
二叉树的五种基本形态:
空二叉树,单结点的二叉树,左子树为空的二叉树,右子树为空的二叉树,左右子树都不为空的二叉树
特殊二叉树:
-
斜二叉树:全部节点只有左孩子,或全部只有右孩子。实际上斜二叉树就是一个链表。
-
完美二叉树(满二叉树):每个结点都有左右孩子(一颗高度为h且有2^h -1个结点的二叉树)
特点
1)叶子结点都在最下一层
2)只有度为0和度为2的结点
-
完全二叉树:
二叉树的抽象数据类型:
二叉树的性质:
-
二叉树上的终端结点数等于双分支结点数加1
-
二叉树上第i层上至多有2i-1个结点(i>=1)
-
深度为h的二叉树至多有2h-1个结点
-
对一棵二叉树中顺序编号为i的结点,若它存在左孩子,则左孩子结点的编号为2i;若它存在右孩子,则右孩子结点编号为2i+1;若它存在 双亲结点(即编号不等于1),则双亲结点的编号为⌊i/2⌋。
-
具有n个结点的理想二叉树的深度为⌈log2(n+1)⌉或⌊log2n⌋+17.
**8.二叉树的存储结构**
二叉树主要有两种存储结构,一种是顺序结构,一种是链式结构
8.1顺序结构:就是使用数组来存储,一般只适合表示完全二叉树(在物理上是一个数组,在结构上是一颗二叉树)
8.2链式结构:用链来表示一颗二叉树,即用链来指示元素的逻辑关系,每个节点油三个域组成(【数据域】【左右指针域】)---->左右指针域指向左右孩子所在的存储地址。