云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 数据结构实验报告6-二叉树与哈夫曼树

数据结构实验报告6-二叉树与哈夫曼树

  • 62 次阅读
  • 3 次下载
  • 2025/12/12 3:55:53

《数据结构与算法》实验指导V2016 }/*PreOrder*/

/*中序遍历二叉树,补充递归算法*/ void InOrder(BiTree p) {

if(p!=NULL) { InOrder (p->lchild);

printf(\ InOrder (p->rchild); }

}/*InOrder*/

/*后序遍历二叉树,补充递归算法*/ void PostOrder(BiTree p) {

if(p!=NULL)

{ PostOrder (p->lchild):

PostOrder (p->rchild); printf(\ }

}/*PostOrder*/

/*先序遍历的非递归算法*/ void RPreorder(BiTree p) {

BiTree stack[MAX],q; int top=0,i;

for(i=0; i

while(q!=NULL) {

printf(\

if(q->rchild!=NULL) _____stack[top++]=q->rchild_____; /*右指针进栈*/ if(q->lchild!=NULL) q=q->lchild; /*顺着左指针继续向下*/

else if(top>0) q=stack[--top]; /*左子树访问完,出栈继续访问右子树结点*/ else q=NULL; }

}/*RPreorder*/

/*中序遍历的非递归算法*/

常熟理工学院计算机科学与工程学院

5

《数据结构与算法》实验指导V2016 void RInorder(BiTree p) {

BiTree stack[MAX],q; int top=0,i;

for(i=0; i

while(q!=NULL) {

if(q->rchild!=NULL) _____stack[top++]=q->rchild_____; /*右指针进栈*/

if(q->lchild==NULL)

printf(\else

stack[top++]=q->lchild; /*左指针进栈*/

q=q->lchild; /*顺着左指针继续向下*/

else if(top>0) q=stack[--top]; /*左子树访问完,出栈继续访问右子树结点*/ else q=NULL; }

}/*RInorder*/

/*后序遍历的非递归算法*/ void RPostorder(BiTree p) {

BiTree stack[MAX],q; int i,top=0,flag[MAX];

for(i=0; i

stack[i]=NULL; flag[i]=0; } q=p;

while(q!=NULL||top!=0) {

if(q!=NULL) /*当前结点进栈,先遍历其左子树*/ {

stack[top]=q; flag[top]=0; top++;

q=q->lchild; } else {

常熟理工学院计算机科学与工程学院

6

《数据结构与算法》实验指导V2016 while(top) {

if(flag[top-1]==0) /*遍历结点的右子树*/ {

q=stack[top-1]; q=q->rchild; flag[top-1]=1; break; } else {

q=stack[--top];

printf(\遍历结点*/ } } }

if(top==0) break; }

}/*RPostorder*/

/*求二叉树的深度算法,补充递归算法*/ int depth(BiTree t) {

int rd,ld;

if(!t) return 0; else {

rd=depth(B->lchild); ld=depth(B->rchild); if(rd>ld) return ld+1; else

return rd+1; }

}/*depth*/

/*建立结点*/

BiTree gettreenode(char x,BiTree lptr,BiTree rptr) {

BiTree t;

t=(BiTree)malloc(sizeof(struct BTNode)); t-> data = x;

常熟理工学院计算机科学与工程学院

7

《数据结构与算法》实验指导V2016 t->lchild = lptr; t->rchild = rptr; return(t); }/*gettreenode*/

/*以后序遍历的方式递归复制二叉树*/ BiTree copytree(BiTree t) {

BiTree newlptr,newrptr,newnode; if(t==NULL)

return NULL; if(t->lchild!=NULL)

newlptr = copytree(t->lchild); else newlptr = NULL; if(t->rchild!=NULL)

newrptr = copytree(t->rchild); else newrptr = NULL;

newnode = gettreenode(t->data, newlptr, newrptr); return(newnode); }/*copytree*/

/*交换二叉树的结点的左右孩子*/ BiTree swap(BiTree b) {

BiTree t,t1,t2; if(b==NULL) t=NULL; else {

t=(BiTree)malloc(sizeof(struct BTNode)); t->data=b->data; t1=swap(b->lchild); /*递归交换左子树上的结点*/ t2=swap(b->rchild); /*递归交换右子树上的结点*/ t->lchild=t2; /*交换根t的左右子树*/ t->rchild=t1; }

return(t); }/*swap*/

/*利用循环队列实现层次遍历*/ void ccOrder(BiTree t) {

}/*ccOrder*/

常熟理工学院计算机科学与工程学院

8

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

《数据结构与算法》实验指导V2016 }/*PreOrder*/ /*中序遍历二叉树,补充递归算法*/ void InOrder(BiTree p) { if(p!=NULL) { InOrder (p->lchild); printf(\ InOrder (p->rchild); } }/*InOrder*/ /*后序遍历二叉树,补充递归算法*/ void PostOrder(BiTree p) { if(p!=NULL) { PostOrder (p->lchild): PostOrder (p->rchild); printf(\ } }/*PostOrder*/ /*先序遍历的非递归算法*/ void

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com