第一节 树的定义
1.树是n(n>=0)个结点的有限集。
若n=0,称为空树。(就是啥都没有)
若n>0,则称为非空树,非空树满足两个条件:
(1)有且仅有一个特定的结点称为根(把他想象成树的主干);
(2)其余结点可分成m(m>=0)个互不相交的有限集T1,T2,......Tm,其中每一个集合本身又是一棵树,把并称为根的子树。(根下面又分支很多树,就是子树)
2.从非空树定义来看,树的定义是一个递归定义。(递归是一种很重要的算法)
3.树的其他表示方式
第二节 树的基本术语
1.结点:树中的一个独立单元。包括数据元素以及指向子树的分支,例如A,B,C...
每个结点(除根以外)都有一个前驱结点,n(n>=0)个后继结点。
2.节点的度:结点拥有的子树数称为结点的度。(我称结点的度为出度,入度是啥?等于多少呢?)
3.树的度:是树内结点最大的度。(这里不是所有结点的度之和哦)
4.叶子:度为0的结点。也叫终端结点(出度为0)
5.非终端结点:度不为0的结点。(出度不为0)
6.双亲和孩子:结点的直接前驱为双亲,直接后继为孩子。
7.兄弟:有相同双亲的结点之间的关系。
8.祖先:结点的所有前驱(直接和间接前驱)。
9.子孙:结点的所有后继(直接和间接后继)。
10.层次:结点的层次从根开始算起,根为第一层,根的孩子为第二层。(就是族谱的辈分)
11.堂兄弟:在同一层的结点。
12.树的深度:树的最大层次。
13.有序树和无序树:结点的子树左右有序,则为有序树。否则为无序树。
14.森林:若干个互不相交的树的集合。
!!!! 小结(线性表和树的异同)
第三节 二叉树的定义
1.二叉树的优势
2.二叉树:n(n>=0)个结点的集合,n=0为空树,n>0为非空树。
3.非空树满足两个条件:
(1)有且仅有一个结点(根)。
(2)除根结点以外其余结点分为两个互不相交的子集T1,T2(子集有序)
4.二叉树和树的区别:(注意:二叉树不是树的特殊种类,是两种概念。
虽然二叉树和树的概念不同,但是有关树的基本术语对二叉树都适用)
(1)二叉树的每个结点的出度都不大于2。
(2)二叉树的子树有左右之分,是有次序的(要切记)