一般对于大量数据访问,如果通过链表的线性访问时间会过长,不宜使用。二叉树可以很很好的解决这个问题,其大部分操作的运动平均时间为 O(lgN)。
树的定义:
一棵树可以看作是一些点的集合。这个集合可以为空集,若不为空集,则可以看作是由根结点(root)和一个或者多个子树组成,这些子树的每一个根结点都和根结点连接。
因此对含有 N 个结点的树拥有 N-1 条边。基于以下事实:每条边都连接他的父亲,而除了根结点外,每个结点都有父亲结点。
几个定义:
叶子结点:没有儿子结点的结点
兄弟结点:拥有相同父亲的结点
路径:从 n1 到 nk 的路径表示为序列 n1,n