• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2019-11-02 22:54 Aet 隐藏边栏 |   抢沙发  5 
文章评分 2 次,平均分 5.0

定义

  • 树是有n个结点的有限集n\geq0
  • n=0,为空树
  • 在任意一颗非空树中:
  • 有且仅有一个特定的称为根(Root)的结点
  • n>1,其余结点可以分为m(m>0)个互不相交的有限集 T_1,T_2,...,T_m
  • 其中,每个集合本身又是一棵树,且称为根的子树

结点分类

  • 结点拥有的子树个数,称为度(Degree)
  • 度为0的结点,是叶子结点或终端结点
  • 度不为0的结点,称为分支结点或非终端结点
  • 除根结点之外,分支结点也称为内部结点
  • 另,树的度,是树内各结点的度的最大值

结点间关系

  • 结点的子树的根,称为该结点的孩子
  • 该结点,称为孩子的双亲,同一个双亲的孩子之间,就是兄弟结点

高度或深度

  • 结点的层次,从根开始定义起,根为第一层,根的孩子为第二层,依次类推
  • 然后,把树中结点的最大层次称为树的深度或高度

树的分类

  • 如果将树中结点的各子树,看成是从左到右是有次序的,不能互换的,则该树为有序树
  • 否则,为无序树

森林

  • 是m棵(m\geq0)互不相交的树的集合

双亲表示法

假设以一组连续的空间存储树的结点,同时,在每个结点中,附设一个指示器指示其双亲结点在数组中的位置

下标 data parent firstchild
0 A -1 1
1 B 0 3
2 C 0 4
3 D 1 6
4 E 2 9
5 F 2 -1
6 G 3 -1
7 H 3 -1
8 I 3 -1
9 J 4 -1

孩子表示法

  • 方法一:
    • 每个结点有多个指针域,每个指针指向一棵子树的根结点,这种方法叫做多重链表法
  • 方法二:
    • 每个结点指针域的个数,等于该结点的度,另专门取一个位置来存储结点指针域的个数

总结:

把每个结点的孩子结点排列起来,以单链表作为存储结构,则n个结点有n个孩子链表,如果是叶子结点,则此单链表为空,然后n个头指针组成一个线性表,采用顺序存储结构,存放在一个数组里面

孩子兄弟表示法

任意一棵树,它的结点第一孩子如果存在就是唯一的,它的右兄弟如果存在也是唯一的。因此我们可以设置两个指针,分别指向该结点的第一个孩子和此结点的右兄弟

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2022-01-11
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享