树的定义:
由一个或多个(N≥0)结点组成的有限集合T,有且只有一个结点称为根(root),当N>1时,其他的结点分为M(M≥0)个互不相交的有限集合[T1, T2, T3 , … , TM]。每个集合本身又是棵树,被称为这个根的子树。
树的结构特点:
-
非线性结构,有一个直接前驱,但可能有多个后继 (1:N);
-
数的定义具有递归性,树中还有树;
-
树可以为空,即节点个数为0。
树的相关概念:
-
根: 即根结点(没有前驱)【A】
-
叶子: 即终端结点(没有后驱)【K, L, F, G, M, I, J】
-
森林:指m棵不相交的树的集合(例如删除A后的子树)
-
有序树:结点各子树从左至右有序,不能互换
-
无序树:结点各子树可互换位置
-
双亲: 即该结点的上层结点(直接前驱)parent
-
孩子: 即该结点的下层结点(直接后驱)child
-
兄弟:同一双亲下的同层结点(孩子之间互称兄弟)
-
堂兄弟:即双亲位于同一层的结点(非同一双亲)
-
祖先:即从根到该结点所经分支的所有节点 【A, B, E 都为K的祖先,是一个集合】
-
子孙:即该结点下层子树中的任一结点
知识点:
-
结点:即数的数据元素
-
结点的度: 结点挂接的子树数量(有几个直接后继就是有几个度)【 A结点的度:3(B, C ,D)】
-
结点的层次:从根到该结点的层数【 A:第一层;B, C, D:第二层 … 】
-
终端结点:即度为0的结点,即叶子
-
分支结点:出树根以外的结点(也称内部结点)【除A以外都是分支节点】
-
树的度:所有节点中的最大值【Max(各结点的度)】
-
树的深度:指所有结点中最大的层数【Max(各结点的层次)】
上图中的结点数 = 13,树的度 = 3, 树的深度 = 4。
树的表示:左孩子右兄弟表示法
目的: 将一颗多叉树转为一颗二叉树;