数据结构 之 二叉树的存储结构----链式存储结构(四)

提示:本篇章主要讲解数据结构中树的相关知识。


二叉树的存储结构----链式存储结构

  • 在二叉树链式存储结构中最常用的是二叉链表。二叉链表的每个结点有一个数据域和两个指针域,一个指针指向左孩子,另一个指向右孩子。结点结构描述为:
  • 在这里插入图片描述

二叉链表

非完全二叉树的二叉链表存储结构

  • 在这里插入图片描述

建立二叉树的二叉链表

-产生问题:因为在顺序存储结构中是以结点在数组中的相对位置表示结点之间的关系,因此,一般的二叉树也必须以满二叉树的形式来存储 这样就会造成存储空间的浪费。

非完全二叉树的顺序存储结构

在这里插入图片描述

建立二叉树的二叉链表

在这里插入图片描述

struct node * p[10];
struct node * Creat_tree( )
{  scanf(“%d%c”,&I,&ch);
while(i!=0&&ch!=#)
{
 s=(struct node *)malloc(sizeof(struct node));
S->data=ch; s->lchild=s->rchild=NULL;
p[i]=s;
if(i==1)  t=s;
else{
		  j=i/2;    if(i%2==0) p[j]->lchild=s;
			else p[j]->rchild=s;
       }
scanf(“%d,%c”,&i,&ch);
}
return t;
}

三叉链表(了解即可,目前我暂时都没有用到过)

在实际操作中,如经常需要寻找结点的双亲,便可以采用三叉链表的形式。三叉链表的结点比二叉链表结点多一个指向双亲的指针域。

非完全二叉树的三叉链表存储结构

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值