二叉树的存储结构

转载 2007年09月23日 01:27:00

 

<iframe style="WIDTH: 89.81%; HEIGHT: 64px" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-4577827332549849&amp;dt=1192819750500&amp;lmt=1192819750&amp;prev_fmts=468x60_as&amp;format=468x15_0ads_al_s&amp;output=html&amp;correlator=1192819750437&amp;channel=1741427766&amp;pv_ch=1741427766%2B&amp;url=http%3A%2F%2Fyzkzoo.5d6d.com%2Fthread-68-1-1.html&amp;color_bg=FFFFFF&amp;color_text=000000&amp;color_link=0000FF&amp;color_url=008000&amp;color_border=336699&amp;ref=http%3A%2F%2Fyzkzoo.5d6d.com%2Fforum-16-1.html&amp;cc=100&amp;ga_vid=1025434795.1192631677&amp;ga_sid=1192817968&amp;ga_hid=1871659779&amp;ga_fc=true&amp;flash=8&amp;u_h=768&amp;u_w=1024&amp;u_ah=738&amp;u_aw=1024&amp;u_cd=32&amp;u_tz=480&amp;u_his=2&amp;u_java=true"></iframe>

<iframe style="WIDTH: 44.33%; HEIGHT: 259px" src="http://pagead2.googlesyndication.com/cpa/ads?client=ca-pub-4577827332549849&amp;cpa_choice=CAEaCB94-nvUZWENUB9QugJQtwRQTVAgULcCUB4&amp;oe=gb2312&amp;dt=1192720966468&amp;lmt=1192720966&amp;format=250x250_as&amp;output=html&amp;correlator=1192720966453&amp;channel=2735220158&amp;url=http%3A%2F%2Fyzkzoo.5d6d.com%2Fthread-67-1-1.html&amp;color_bg=FFFFFF&amp;color_text=000000&amp;color_link=0000FF&amp;color_url=008000&amp;color_border=336699&amp;ad_type=text_image&amp;region=_google_cpa_region_&amp;ref=http%3A%2F%2Fyzkzoo.5d6d.com%2Fforum-16-1.html&amp;cc=100&amp;ga_vid=1025434795.1192631677&amp;ga_sid=1192720940&amp;ga_hid=1155529757&amp;ga_fc=true&amp;flash=8&amp;u_h=768&amp;u_w=1024&amp;u_ah=738&amp;u_aw=1024&amp;u_cd=32&amp;u_tz=480&amp;u_his=2&amp;u_java=true"></iframe>一、复习二叉树的定义

二叉树的基本特征:每个结点的度不大于2。

二、顺序存储结构

#define MAX_TREE_SIZE 100

typedef TElemType SqBiTree[MAX_TREE_SIZE];

SqBiTree bt;

 

结点编号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
结点值 1 2 3 4 5 0 0 0 0 6 7 0 0 0 0

第i号结点的左右孩子一定保存在第2i及2i+1号单元中。

缺点:对非完全二叉树而言,浪费存储空间

三、链式存储结构

一个二叉树的结点至少保存三种信息:数据元素、左孩子位置、右孩子位置

对应地,链式存储二叉树的结点至少包含三个域:数据域、左、右指针域。

 

也可以在结点中加上指向父结点的指针域P。

 

对结点有二个指针域的存储方式有以下表示方法:

typedef struct BiTNode{

TElemType data;

struct BitNode *lchild,*rchild;

}BiTNode,*BiTree;

基于该存储结构的二叉树基本操作有:

Status CreteBiTree(BiTree &T);

//按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树,

//构造二叉链表表示的二叉树T。

Status PreOrderTraverse(BiTree T,Status(*Visit)(TElemType e));

//采用二叉链表存储结构,Visit是对结点操作的应用函数

//先序遍历二叉树T,对每个结点调用函数Visit一次且仅一次

//一旦visit()失败,则操作失败

Status InOrderTraverse(BiTree T,Status(*Visit)(TElemType e));

//采用二叉链表存储结构,Visit是对结点操作的应用函数

//中序遍历二叉树T,对每个结点调用函数Visit一次且仅一次

//一旦visit()失败,则操作失败


Status PostOrderTraverse(BiTree T,Status(*Visit)(TElemType e));

//采用二叉链表存储结构,Visit是对结点操作的应用函数

//后序遍历二叉树T,对每个结点调用函数Visit一次且仅一次

//一旦visit()失败,则操作失败


Status LevelOrderTraverse(BiTree T,Status(*Visit)(TElemType e));

//采用二叉链表存储结构,Visit是对结点操作的应用函数

//层序遍历二叉树T,对每个结点调用函数Visit一次且仅一次

//一旦visit()失败,则操作失败

四、总结本课内容

顺序存储与链式存储的优缺点。

<iframe style="WIDTH: 52.39%; HEIGHT: 263px" src="http://pagead2.googlesyndication.com/cpa/ads?client=ca-pub-4577827332549849&amp;cpa_choice=CAEaCKcC4yuPlq5lUDRQDVAtUK4BUENQCA&amp;oe=gb2312&amp;dt=1192819388296&amp;lmt=1192819388&amp;format=300x250_as&amp;output=html&amp;correlator=1192819388281&amp;channel=2735220158&amp;url=http%3A%2F%2Fyzkzoo.5d6d.com%2Fviewthread.php%3Ftid%3D70%26page%3D1%26extra%3Dpage%253D1&amp;color_bg=FFFFFF&amp;color_text=000000&amp;color_link=0000FF&amp;color_url=008000&amp;color_border=336699&amp;ad_type=text_image&amp;region=_google_cpa_region_&amp;ref=http%3A%2F%2Fyzkzoo.5d6d.com%2Fpost.php%3Faction%3Dedit%26fid%3D16%26tid%3D70%26pid%3D70%26page%3D1%26extra%3Dpage%253D1&amp;cc=100&amp;ga_vid=1025434795.1192631677&amp;ga_sid=1192817968&amp;ga_hid=1527165455&amp;ga_fc=true&amp;flash=8&amp;u_h=768&amp;u_w=1024&amp;u_ah=738&amp;u_aw=1024&amp;u_cd=32&amp;u_tz=480&amp;u_his=5&amp;u_java=true"></iframe>

<iframe style="WIDTH: 82.23%; HEIGHT: 74px" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-4577827332549849&amp;dt=1192818497343&amp;lmt=1192818497&amp;format=468x60_as&amp;output=html&amp;correlator=1192818497343&amp;channel=1741427766&amp;url=http%3A%2F%2Fyzkzoo.5d6d.com%2Fthread-68-1-1.html&amp;color_bg=FFFFFF&amp;color_text=000000&amp;color_link=0000FF&amp;color_url=008000&amp;color_border=336699&amp;ad_type=text_image&amp;ref=http%3A%2F%2Fyzkzoo.5d6d.com%2Fforumdisplay.php%3Ffid%3D16%26page%3D1&amp;ui=rc%3A6&amp;cc=100&amp;ga_vid=1025434795.1192631677&amp;ga_sid=1192817968&amp;ga_hid=1000484876&amp;ga_fc=true&amp;flash=8&amp;u_h=768&amp;u_w=1024&amp;u_ah=738&amp;u_aw=1024&amp;u_cd=32&amp;u_tz=480&amp;u_his=6&amp;u_java=true"></iframe>

<iframe style="WIDTH: 58.41%; HEIGHT: 156px" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-4577827332549849&amp;dt=1192819750656&amp;lmt=1192819750&amp;prev_fmts=468x60_as%2C468x15_0ads_al_s%2C234x60_as&amp;format=200x90_0ads_al_s&amp;output=html&amp;correlator=1192819750437&amp;channel=1741427766&amp;pv_ch=1741427766%2B&amp;url=http%3A%2F%2Fyzkzoo.5d6d.com%2Fthread-68-1-1.html&amp;color_bg=FFFFFF&amp;color_text=000000&amp;color_link=0000FF&amp;color_url=008000&amp;color_border=336699&amp;ref=http%3A%2F%2Fyzkzoo.5d6d.com%2Fforum-16-1.html&amp;cc=100&amp;ga_vid=1025434795.1192631677&amp;ga_sid=1192817968&amp;ga_hid=1871659779&amp;ga_fc=true&amp;flash=8&amp;u_h=768&amp;u_w=1024&amp;u_ah=738&amp;u_aw=1024&amp;u_cd=32&amp;u_tz=480&amp;u_his=2&amp;u_java=true"></iframe> 

 

《数据结构》二叉树的顺序存储

  • 2014年11月11日 23:14
  • 350KB
  • 下载

二叉树采用三叉链表的存储结构,不借助栈的非递归中序遍历

/********** 【题目】二叉树采用三叉链表的存储结构,试编写 不借助栈的非递归中序遍历算法。 三叉链表类型定义: typedef struct TriTNode { TElemType d...

二叉树的数组存储结构

  • 2015年11月15日 00:37
  • 21KB
  • 下载

树、二叉树的性质和存储结构

  • 2016年11月18日 22:55
  • 169KB
  • 下载

二叉树的顺序存储结构的C++实现

本以为二叉树的顺序存储结构实现非常简单,类似于线性表,而在实际操作当中遇到了一些小问题,首先是如何判别树节点是否为空,我采用的方法初始化数组值为-111,新插入的节点覆盖初始值,而没有覆盖初始值的则认...

二叉树的存储结构和遍历算法

  • 2012年10月08日 14:48
  • 262KB
  • 下载

基于三叉链表存储结构的二叉树的不用栈的非递归遍历

三叉链表和二叉链表的不同在于,三叉链表多了一个parent指针域,指向双亲节点。便于访问双亲节点。 有了这个parent指针域,我们就能实现不用栈的非递归遍历二叉树。 现在,让我们来看看基于三叉链...

构建二叉树的二叉链表存储结构

  • 2013年10月23日 17:11
  • 988KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二叉树的存储结构
举报原因:
原因补充:

(最多只允许输入30个字)