树的定义
递归定义
树的定义有不同方式,下面仅给出最常见的递归定义:
树:个结点的有限集合。当
时,称为空树;任意一棵非空树满足以下条件:
- 有且仅有一个特定的结点称为根结点
- 当
时,除根节点之外的其余结点被分成
个互不相交的有限集合
,其中每个集合又是一棵树,并称为这个根结点的子树。
时,树为空树;
时,树为只有根结点的树。
示例
本图可结合“基本术语”食用
如图所示的一棵树,共有13个结点,是根,其余结点分成三个互不相交的子集:
这些子集都是根的子树,且本身也是一棵树。这些树除根以外的结点也可分为互不相交的子集:
根的子树:
根的子树:
根的子树:
而在中,
为根,
和
是
其两棵互不相交的子树。他们本身都是只有一个结点的树。
基本术语
- 度:结点拥有的子树总数。树的度为该树中结点的度的最大值
- 叶子结点(终端结点):度为0的结点
- 层次:从根开始定义。若某结点在第
层,则其孩子结点在第
层
- 深度(高度):树中(叶子)结点的最大层次
- 分支结点(非终端结点):度不为0的结点
- 内部结点:非根非叶的全部结点
- 路径:长度等于两个结点之间通过的结点数目减一
- 孩子(Child)结点:结点的子树的根
- 双亲(Parent)结点:孩子结点的根
- 兄弟(Sibling)结点:双亲结点相同的结点
- 堂兄弟结点:双亲在同一层次的结点
- 祖先:结点的祖先是从根到该结点所经分支上的所有结点
- 子孙:以某结点为根的子树的任一结点都称为该结点的子孙
- 森林:
棵互不相交的树的集合。
注:
- 有序树:树中各结点各子树有次序,左右不能互换。有序树最左边的子树的根是它的第一个孩子,最左右边的子树的根是它的最后一个孩子。
- 树可用二元组
表示:
是树的根结点,
是
棵树的森林。
,
为根
的第
棵子树。
时,树根及其子树森林间关系如下:
二叉树
定义
- 每个结点至多只有两棵子树
- 二叉树是有序树,其子树有左右之分。
形态
特殊的二叉树
满二叉树
概念
每个非叶子节点都有两个子节点,且所有叶子节点都在同一层上。满二叉树是同深度下结点最多的二叉树。
特点
见
完全二叉树
概念
除了最后一层外,其他层的节点数都是满的,最后一层的节点都靠左排列。按照满二叉树如图方式编号,完全二叉树与之编号相同的结点在图中的位置也完全相同。
特点
- 叶子结点只能出现在最下两层且最下层的叶子结点集中在二叉树的左面
- 若有度为1的结点,只能有一个,且该结点有且只有左孩子
- 深度为k的完全二叉树,在第(k-1)层一定是满二叉树
- 在同样结点个数的二叉树中,完全二叉树的深度最小。
二叉树性质
在二叉树的第层上至多有
个结点
深度为的二叉树最多有
个结点
任意二叉树,若其终端结点为,度为2的结点为
,则
具有个结点的完全二叉树的深度为
具有个结点的完全二叉树,将其结点按层序编号(从第
层到第
层,每层从左到右),则对任一结点
,有
- 若
,则结点
是二叉树的根,无双亲;若
,则其双亲是结点
- 若
,则结点
无左孩子,即为叶子结点;若
,则其左孩子为结点
- 若
,则结点
无右孩子;若
,则其左孩子为结点
很水的文字证明:
图示: