树的定义
树(Tree)是n(n>=0)个结点的有限集。n=0时称为空树。在任意一棵非空树中,有且仅有一个特定的称为根(Root)的结点,当n>1时,其余结点可分为m(m>0)个互不相交有限集T1,T2。。。Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。
树对于树的定义还要强调2点:
(1)n>0时根结点是唯一的,不可能存在多个根结点,只能有一个根结点。
(2)m>0时子树的个数没有限制,但他们一定是互不相交的。
树的结点包含一个数据元素以及若干指向其子树的分支。结点拥有的子树数称为结点的度(Degree)。度为0的结点称为叶结点(Leaf)或者终端结点。度不为0的结点称为非终端结点或分支结点。除根结点之外,分支结点也称为内部结点。树的度是树内各结点的度的最大值。
结点的层次(Level)从根开始定义起,根为第一层,根的孩子为第二层,树中结点的最大层次称为树的深度(Depth)或者高度。
层如果将树中结点的各子树看成从左至右是有次序的,不能互换的,则称该树为有序树,否则称为无序树。
森林是m(m>=0)棵互不相交的树的集合。
树的存储结构
(1)双亲表示法
我们假设以一组连续空间存储树的结点,同时在每个结点中,附设一个指示器指示其双亲结点到链表中的位置。也就是说,每个结点除了知道自己是谁以外,还知道它的双亲在哪里。
双亲表示法其中data是数据域,存储结点的数据信息,而parent是指针域,存储该结点的双亲在数组中的下标。
由于根结点没有双亲,所以我们约定根结点的设置域为-1,这就意味者,所有的根结点都存有他双亲的位置。
双亲表示法(2)孩子表示法
(3)孩子兄弟表示法
网友评论