树和二叉树
基本概念
树
有 个节点的有限集,任何一棵非空树满足:
- 有且仅有一个特定的称为
根的结点; - 时,其余结点可以分为一些互不相交的有限集合,每个集合本身又是一棵树;
树适合表示具有层次结构的数据。
基本术语
层:根节点为第一层,根的孩子都属于第二层,孩子的孩子属于第三层,以此类推;
度:节点的孩子个数;
树的度:所有节点的最大度;
有序树和无序树:节点的孩子顺序是否可以交换;
路径和路径长度:两个节点之间的所经过的节点序列,长度则是指路径上所经过边的个数;
caution
由于树中的 有向的,从双亲指向孩子,因此路径都是从上至下的,同一双亲的两个节点不存在路径。
高度、深度:高度从下往上,深度从上往下。
森林:森林是 棵互不相交的树的集合。
树的性质
- 树中的节点个数等于所有节点的度数之和加一(加上根节点);
- 度为 的树中第 层上至多有 个节点 ();
- 高度为 的 叉树至多有 个节点;
- 具有 个节点的 叉树的最小高度为 .
二叉树
tip
每个节点至多有两个子树,且子树有左右顺序之分,因此树的度为 2.
度为 2 的树至少有 3 个节点,而二叉树可以为空。
满二叉树:树的每层都含有最多的节点
二叉树的每一层最多有 ,因此一个高为 的满二叉树有 个节点。
双亲节点与孩子节点下标 (从 1 开始,下同)的关系为:若双亲编号为 ,则左孩子为 ,右孩子为 .
完全二叉树:节点的孩子按照从左到右的顺序出现,每个节点和编号一一对应
有如下性质:
- 叶节点只可能在最后的两层;
- 度为 1 的节点只可能有 1 个,且一定只有左孩子;
- 若 ,则 为分支节点,不然则为叶节点;
- 若 为叶节点或只有左孩子,则编号大于 的节点都是叶节点;
- 若 是奇数,则每个分支都有左孩子和有孩子; 为偶数,则编号最大的分支节点 没有右孩子;
- 当 时,其双亲节点是 , 为偶数则是左孩子;
- 当 时,节点 的左孩子编号为 ,否则无左孩子;
- 当 时,节点 的右孩子编号为 ,否则无右孩子;
- 节点 所在层次为 ,则拥有 个节点的完全二叉树高为 或者 .
有 n 个叶子节点的完全二叉树有最多有多少个节点?
这个问题需要额外考虑一种情况,即当完全二叉树的叶子节点相同时,其结构不唯一,如
二叉排序树:左子树上的所有节点的关键字都小于右子树,右子树上的所有节点的关键字都大于左子树,且左右子树都是二叉排序树;