树与图
一棵树就是一个满足一定要求的顶点与边的非空集合体。一个顶点就是一个简单的对象(也被称为是节点),它可以有个名字,并且可以携带其他关联信息;一个边就是两个节点之间的连接。树中的一条路径就是一个不同的节点序列,在序列中连续的节点由树中的边连接。定义一棵树的性质就是要有一条简明的路径连接任意两个节点。如果在几对节点中有不止一条的路径,或者在几对节点中没有路径,那样我们就有了一个图;我们没有树。一组不想交的树被称作森林。
一棵有根树就是我们在其中指派一个节点作为树的根的树。在一棵有根树中,任何节点都是一棵由该节点及其下面的节点组成的子树的根。
在根与树中其他节点之间只有一条路径。每一个节点(除了根)都只有一个节点在它的上面,这个节点被称作父节点,而直接在其下面的节点被称为子节点。没有子节点的节点被称作叶子或是终端节点。在特定的应用中,每一个节点的子节点被排序方法是有着重要意义的;而在另外一些应用中,其意义却并不大。
一个图就是一组节点,它与连接着不同节点对的一组边在一起(这些节点至多有一条边连接着任一对节点)。我们可以想象,从某个节点开始,跟随一条边到这条边的连续节点,然后跟从那个节点到另一个节点的边,以此类推。以这种方式,一个从一个节点到另一个节点的边的序列(没有节点出现两次)被称为简单路径。如果有一条简单路径连接任何节点对,一个图就是连通的。除了开头与末尾的节点是相同的之外一条简单路径被称作环路。
每一棵树都是一个图,哪一些图是树呢?如果一个图满足以下四个条件的任意一条,我们就可以把它考虑为树:G有N-1条边,并且没有环路;G有N-1条边,并且是连通的;只有一条路径连接G中的每一对顶点;G是连通的,但在任意边被删除后不再保持连通。