浅谈数据结构中树的存储结构

  树的基本定义我已经在前一篇手记中浅显地讲解了一下,既然定义的一棵树,那

么我们应该使用什么结构既能存储树中结点所包含的数据,又能存储各节点之间的关系呢。根据顺序存储和链式存储的不同特点,我们将用四种表示法:双亲表示法、孩子的多重链表表示法、孩子链表表示法、孩子兄弟表示法。

  1、双亲表示法

  在树中除了根结点以外,其他结点都会仅有一个双亲结点。

  将数组中的下标用于表示双亲结点的位置或者是左孩子或者右孩子或是由兄弟。当然,这样的结构依赖于存储的顺序是采用的是层序遍历。

  2、孩子的多重链表表示法

  这种表示方法分2种,一种是多重链表表示法,即用树的度就表示一个节点指针域的个数,这样很大程度上浪费了内存资源。第二种是孩子链表表示法,即一个节点的指针域的个数和其孩子的个数(该节点的度)相等。

  3、孩子链表表示法

  用多个单链表表示孩子,在同一个单链表中的孩子有着共同的双亲。

  有孩子链表表示法衍生出来的双亲孩子表示法,既是将双亲表示法和孩子链表表示法相结合起来了,将孩子与双亲,双亲与孩子之间的关系展示出来,可以不用遍历便可寻找孩子的双亲或者双亲的孩子。

  4、孩子兄弟表示法

  存储区域分三块,中间那块存储结点的数据,左边指向该节点的第一个孩子,右边指向该节点的右兄弟。


转载于:https://juejin.im/post/5c87591b6fb9a04a0f660581

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
B是一种平衡查找,其特点是能够在相对较短的时间内完成查找、插入和删除操作,因此在文件系统和数据库系统中被广泛应用。 B的定义如下: 1.每个节点最多有m个子节点; 2.除根节点和叶子节点外,其他节点至少有ceil(m/2)个子节点; 3.如果根节点不是叶子节点,则至少有两个子节点; 4.所有叶子节点都在同一层次上。 B的基本操作包括:查找、插入和删除。 查找操作与二叉查找类似,从根节点开始递归查找。插入和删除操作需要维护B的平衡性,即保证每个节点的子节点数在一定范围内。 插入操作的过程如下: 1.从根节点开始查找,找到合适的叶子节点; 2.如果叶子节点未满,则直接插入; 3.如果叶子节点已满,则进行节点分裂,将中间的关键字上移到父节点,并将左右节点分别作为父节点的子节点。 删除操作的过程如下: 1.从根节点开始查找,找到待删除的关键字所在的节点; 2.如果待删除的关键字在叶子节点上,直接删除; 3.如果待删除的关键字在非叶子节点上,找到它的前驱或后继关键字,用它来代替待删除的关键字,并删除前驱或后继关键字。 B的性能优于二叉查找,因为B的每个节点可以存储多个关键字,从而减少查找路径的长度。B的平衡性也能保证的高度相对较小,从而提高查找、插入和删除操作的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值