树的存储结构(多种表示方法)

一.树的表示方法有哪有?

1.双亲表示法

2.孩子表示法

3.孩子兄弟表示法

二.几种常见方法的介绍

1.双亲表示法

树的存储形式共有两种,一种是数组形式存储,就是链式存储,一种是链式存储。而双亲表示法就是用数组的形式来表达树的,具体如下:

 也就是说我定义两个结构体,一个结构体里面装载数据域(就是我要装载的数据),另一个就是伪指针(双亲位置域),也就是记录双亲节点的位置的。第二个结构体装载一个数组结构的树节点,就是说节点个数有多个,我用数组把他给存储起来,还有一个节点树。并且规定第一层父节点的位置域为-1,下标为0。如此一来用个表画起来就可以简单表示,但是这种方法用数组存储起来的肯定有些呆板,所以还有其他方法。这个方法我可以从子节点的位置找到父节点的位置,当然这是因为有一个位置域记录父节点的位置,那他的缺点也非常明显,就是无法通过父节点去寻找字节点。如果我想找到的话也可以就是遍历找到索引下标为父节点的下标就行,但是方法效率不高,特别麻烦。

2.孩子表示法

 它的相关代码如下:

 存储图如下:

 这种方法的代码形式域双亲表示法差不多,就是用了一个链表的形式将所有孩子都串起来了,这样就验证了孩子表示法的含义,就是用孩子来表示,当然图中两个B或者C等等的含义是不一样的,

 就以这两行为例:第一个B里面装的东西实际上是索引值1,而不是下面 B链表。

3.孩子兄弟表示法

 那么好了左边的图树是多叉树,我们通过孩子兄弟表示方法可以将这种多叉树统一成二叉树,并且通过两个指针的形式来控制二叉树,左边节点放的是孩子节点,右边节点放的是兄弟节点,我们就以A为例,A的左边节点孩子是B,右边是兄弟节点,由于右边没有兄弟,所以右边就没节点,那么以此类推将其转换成右图的二叉树形式,这样的方式叫做孩子兄弟表示法;

好的,以上就是树的存储结构的三种存储方式方法;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值