树的概念
对于大量输入数据,链表的访问时间太慢。树是非常有用的抽象概念。
递归是定义树的一种自然方式。一棵树是节点的集合。这个集合可以是空集。若不是空集,则树由根(root)节点及0-多个非空子树组成,这些子树每一棵的根都被来自根root的有向边(edge)所连接。
每一棵子树的根叫做root的child,而root是每一棵子树的根的parent。
一棵树是N个节点和N-1条边的集合,其中的一个节点叫做根节点。*N-1的结论是产生于如下定义:每条边都将某个节点连接到其父亲,而根节点没有父亲,其余每个节点都有一个父亲。
节点的度:节点拥有的子树数称为节点的度。
叶子节点:没有儿子的节点称为leaf。
兄弟:具有相同父节点的称为兄弟(siblings)。
路径:从节点n1-nk的路径定义为节点的n1,n2,n3...nk一个序列,使得对于1<=i<=k,节点ni是ni+1的父亲。*这也要求了路径必须从根节点往下遍历,而不能逆向而上。而且对于任意节点,有且只有一条路径。
深度:对任意节点的深度为从根到ni的唯一路径的长。根的深度为0。
高:ni的高度为从ni到其树叶的最大的深度。因此,所有树叶的高度都是0。
一棵树的高等于它根的高,一棵树的深度等于它最深的叶子节点的深度。
树的实现
二叉查找树这种简单的数据结构,大部分操作的运行时间平均为O(logN)。是两种库集合类