树的表示方法

树的表示方法:

双亲表示法:
           1,(只能找到双亲,要找孩子得重新遍历一遍)一个数据域存的每个结点的名字,例如ABCD等,一个双亲域,双亲域存的是双亲所在的数组下标,根结点不存在双亲,所以对应的指针域为-1
           2.(能找到孩子,增加一个结点左边孩子的域)增加一个存左边孩子下标的域,如果此这个数据域只有一个孩子,也算在这里,如果没有孩子,则直接存-1,存的是左边孩子的数组下标
           3.(关注孩子之间的关系)增加一个右兄弟域来体现兄弟之间的关    系,如果这个数据域有右兄弟,就存右兄弟的下标,如果没有,则存-1

多重链表表示法:

         1.指针域的个数等于树的度的个数,这种方法对于树中结点的度相差很大时,浪费空间
 		 2.每个结点指针域的个数等于该结点的度的个数,所以要再开一个域来存这个结点的度,剩下的为指针域,指向该结点的各个孩子的结点

孩子表示法:

    把每个结点的孩子结点排列起来,以单链表存储,n个结点有n个孩子链表,如果没有孩子,则此单链表为空,n个头指针又组成一个线性表,放进一个一维数组中,要设计两种结点结构,一种是孩子链表的孩子结点有child域和next域,child域存此结点孩子所对应的数组下标,next域用来存储指向某结点的下一个孩子结点的指针,另一种是表头结点data域和firstchild域,data域用来存储结点的信息,如ABCD等,firstchild域是头指针域,存储的是孩子链表的头指针

孩子兄弟表示法:

定义三个域,第一个data域是数据域,firstchild为指针域,存储该结点的第一个孩子 的存储地址,rightsib是指针域,存储该结点的右兄弟结点的存储地址
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值