一、树
树的组成:根和子树
树的结点包含:一个数据元素,以及若干指向其子树的分支。
结点的度:该结点说拥有的子树个数(即指向其子树的分支条数)。
叶子或终端结点:度为0的结点
分支结点或非终端结点:度不为0的结点
内部结点:除根结点外的分支结点
树的度:树内各结点的度的最大值
孩子结点:结点的子树的根结点,相应的该结点为孩子结点的父亲结点
兄弟结点:同一个父亲结点的孩子结点。
祖先结点:从根到该结点所经分支上的所有结点。
子孙结点:以某结点为根的子树中任一结点
结点的层次:从根开始算起,根为第一层。
堂兄弟:父亲结点在同一层的结点。
树的深度(高度):树中结点的最大层次称为数的深度。
有序树:各子树从左至右有次序,反之则为无序树。
森林:互不相交的树的集合。
二、二叉树
二叉树:每个结点至多只有两棵子树。子树有左右之分。
二叉树有五种形态:空二叉树,仅有根结点的二叉树,右子树为空的二叉树,左子树为空的二叉树,左右都非空的二叉树。
二叉树的性质:
1)在二叉树的第i层上至多有2i-1个结点(i>=1)
2)深度为k的二叉树至多有2k-1个结点
3)对任何一棵二叉树,若其终端结点数为n0,度为2的结点数为n2,则n0=n2+1.
满二叉树:一棵深度为k且有2k-1个结点的二叉树,其特点就是每一层上的结点数都是最大结点数。
完全二叉树:深度为k的,有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应。即完全二叉树为一个满二叉树的一部分。
4)具有n个结点的完全二叉树的深度为[log2n] +1
二叉树的存储结构:顺序或者链式
1)顺序存储结构:用一组地址连续的存储单元依次自上而下,自左而右的存储结点元素。
对于完全二叉树,将编号为i的结点存储在一维数组中下标为i-1的分量中。
对于一般二叉树,将其每个结点与完全二叉树上的结点相对应存储在一维数组的相应分量中。(用”0“表示不存在此结点,则存在浪费,所以顺序结构仅适用于完全二叉树)
2)链式存储结构:分为二叉链表(两个指针域保存左右子结点)和三叉链表(三个指针域,保存左右子结点和父结点)
三、遍历二叉树和线索二叉树
1、三种遍历次序:
1)前序遍历:
2)中序遍历
3)后序遍历
2、线索二叉树:终端结点的空指针域用来保存前驱和后驱,即形成线索二叉树,将二叉树转化为线索二叉树的过程称为线索化。