1.此前的向量,列表数据结构存在不够用的情况

2.向量的静态操作效率很高,动态操作效率很低,而列表则反之,即两者无法同时兼顾静态操作和动态操作的高效性

3.树融合了向量和列表的优点,为半线性结构

4.树的概念

 指定任一节点r作为根后,T即称作有根树

任何一个节点r所拥有的孩子的数目,称作r的度数,d=degree(r)为r的度

任何一棵树中所含的边数,恰好等于树中所有顶点的度数之和,也恰好等于顶点总数减一:e=n-1

5.路径&环路

V中的k+1个节点,通过E中的k条边依次相联,构成一条路径(path)//亦称通路

pi={(V0,V1),(V1,V2),...,(Vk-1,Vk)}

路径长度:|pi|=边数=k

环路:Vk=V0

6.联通&无环

节点之间均有路径,称作联通图,不含环路,称作无环图

任一节点V与根之间存在唯一路径:path(v,r)=path(v)

7.深度&层次

V的深度:depth(v)=|path(v)|

path(v)上的节点,均为v的祖先,v是它们的后代

半线性:V的祖先唯一,后代不一定唯一

没有后代的节点称为叶子,所有叶子深度中的最大者,称为树的高度

空树的高度取作-1.

8.树的接口

root():根节点

parent():父节点

firstChild():长子

nextSibling():兄弟

insert(i,e):

remove(i):

traverse():遍历

9.长子兄弟表示法

每个节点均设两个引用:纵向firstChild(),横向nextSibling()

posted on 2018-03-12 17:14  sonofthesea  阅读(95)  评论(0编辑  收藏  举报