前面的章节,我们介绍了两种特殊的线性结构,栈和队列。线性结构一般适合用于处理一对一的关系结构。但现实中我们会经常遇到一对多,或者多对多的情况。从本文章开始我们将介绍一对多的数据结构–树
树,是一个含有若干个结点的有限集合,当结点数量为0时,我们称这棵树为空树。每个树都有并且只有一个特定的根结点。其余结点可分为若干个互不相交的有限集合,其中每个集合本身也是一棵树,成为根结点的子树。
树有结点,每个结点也是树…….很显然,树的定义形式时递归定义的。
对于树,有一些概念,首先对于树的结点类型,我们需要进行一下分类
在这之前我们要引入一个概念—结点的度
一个结点所拥有的子树的个数就成为结点的度。如果一个结点的度为0,则我们称这个结点为叶子结点。对于度不为0的结点,我们称其为分支结点
除根结点外的分支结点也成为内部结点。
对于一棵树,结点与结点之间也是有着一些关系的。一个结点的子树,我们称其为这个结点的孩子,对应的,该结点是其子树的双亲。同一个双亲之间的孩子互为兄弟。一个结点的<