前言(转载请说明作者!)2020.4.10
树形结构在数据结构的学习中占有很大的比重,而二叉树是树的基础。
一般的树可以转换为二叉树来处理。
注意:树的交叉点叫结点!!!!不是节点!!!!!!!
节点被认为是一个实体,有处理能力,比如说网络上的一台计算机;
结点则只是一个交叉点,像“结绳记事”,打个结,做个标记,仅此而已。
一般算法中点都是结点。那么复杂网络理论中所谈到的点应该是“节点”了。
二叉树:定义和特点
定义
二叉树 可以是空树,也可以是 由一个根结点加上两棵分别称为左子树和右子树的,并且互不相交的二叉树组成(左、右子树次序不能颠倒)。
如上图:***A叫做根结点,B、D、E组成的树叫做左子树,C、F、G组成的树叫做右子树。***
PS:二叉树中每个结点,最多有两个孩子,没有左右孩子的结点,称为叶子结点(如图中D、E、F、G)。
e.g. 上图中B叫做A的左孩子,C叫做A的右孩子。
五种基本形态
- 空树
- 单结点树
- 只有左子树
- 只有右子树
- 左右子树都有
满二叉树
如上图所示,深度为k且含有2k-1个结点的二叉树,称为满二叉树。上图是深度为4的满二叉树。
完全二叉树
一棵树的结点编号与相同深度的完全二叉树所对应的完全二叉树编号完全相同。
如图所示的一个完全二叉树
五个性质
-
非空二叉树中,第 i 层 (i>=1)上**最多有2i-1个结点。**
-
深度为k(k>=1)的二叉树中,结点总数最多 为2k-1 个。
-
对于**任何一个二叉树**,若它含有**n0个叶子结点(度为0)、n2个度为2的结点**。
则**必存在关系式n0=n2+1;即*叶子结点个数只与度为2的结点个数有关。***