一:概述

在前面已经说了数组,链表,栈,队列,散列表等线性数据结构,

但在生活实际中,我们遇到的情况逻辑关系并不是简单的线性关系

典型的非线性数据结构;数和图

生活中有许多树的例子:

例如家谱,企业里的职级关系,

除了人与人之间的关系外,许多抽象的东西也可以称为一个树,如一本书的目录。

上述例子的共同点是:因为它们都像自然界中的树一样,从同一个”根“衍生出许多的”枝干“,再从每一个”枝干“衍生出许多更小的

”枝干“,最后衍生出更多的”叶子“

二:具体说明

<1>非线性结构之树

  在数据结构中,树的定义为:

  树(tree)是n(n>=0)个节点的有限集。当n=0时,称为空树。在任意一个非空树中,有以下的特点。

  1. 有且仅有一个特定的成为根的节点
  2. .当n>1时,其余节点可分为m(m>0)个互不相交的有限集,每一个集合本身又是一个树,并称为根的子树。

下面是一张标准的树结构图:

                                数据结构之非线性结构树的初识(Java)_数据结构

在上图中最上面节点1是根节点(root),节点5,6,7,8是树的末端,没有’孩子”,被称为叶子节点。图中

用红框括起来的是其中根节点1的一个子树。

                                数据结构之非线性结构树的初识(Java)_父节点_02

在上图中,节点4的上一级节点,是节点4的父节点(parent),从节点4衍生出来的节点,是节点4的孩子节点(child);和节点4同一级,由同一个父节点衍生出来的节点,是节点4的兄弟节点(sibling)

树的最大层级数,被称为树的高度或深度。从上图可以看出,这个树的高度为4.