数据结构实验2报告.doc

上传人:wj 文档编号:583619 上传时间:2023-04-29 格式:DOC 页数:8 大小:43.50KB
下载 相关 举报
数据结构实验2报告.doc_第1页
第1页 / 共8页
数据结构实验2报告.doc_第2页
第2页 / 共8页
数据结构实验2报告.doc_第3页
第3页 / 共8页
数据结构实验2报告.doc_第4页
第4页 / 共8页
数据结构实验2报告.doc_第5页
第5页 / 共8页
数据结构实验2报告.doc_第6页
第6页 / 共8页
数据结构实验2报告.doc_第7页
第7页 / 共8页
数据结构实验2报告.doc_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构实验2报告.doc

《数据结构实验2报告.doc》由会员分享,可在线阅读,更多相关《数据结构实验2报告.doc(8页珍藏版)》请在冰点文库上搜索。

数据结构实验2报告.doc

任课教师:

孙树森

《数据结构与算法》

(2012-2013学年第2学期)

学号:

2011329700214

姓名:

周咪咪

班级:

11数字媒体技术

(2)班

实验2树的二叉链表表示及其遍历

实验目的:

掌握二叉树的链式存储结构及其遍历

实验重点:

二叉树的链式存储实现方法

实验内容:

用二叉链表存储结构表示下图所示二叉树的,并用递归方法输出三种遍历结果。

实验思路:

(1)

实验提示:

1,二叉树的链式存储结构表示

typedefstructBiTNode{

TElemTypedata;

structBitNode*lchild,*rchild;

}BiTNode,*BiTree;

2,二叉树的链式存储算法实现

CreateBiTree(&T,definition);

InsertChild(T,p,LR,c);

3,二叉树的递归法遍历

PreOrderTraverse(T,Visit());

InOrderTraverse(T,Visit());

PostOrderTraverse(T,Visit());

示例源程序

#include

#defineERROR0;

#defineOK1;

typedefintElemType;

typedefstructBinaryTree

{

ElemTypedata;

structBinaryTree*l;

structBinaryTree*r;

}*BiTree,BiNode;

BiNode*new()

{

return((BiNode*)malloc(sizeof(BiNode)));

}

intCreateSubTree(BiTree*T,ElemType*all,inti)

{

if((all[i]==0)||i>16)

{

*T=NULL;

returnOK;

}

*T=new();

if(*T==NULL)returnERROR;

(*T)->data=all[i];

CreateSubTree(&((*T)->l),all,2*i);

CreateSubTree(&((*T)->r),all,2*i+1);

}

intCreateBiTree(BiTree*T)

{

ElemTypeall[16]={0,1,2,3,0,0,4,5,0,0,0,0,6,0,0,0,};

CreateSubTree(T,all,1);

}

voidprintelem(ElemTyped)//输出d的值

{

printf("%d\n",d);

}

intPreOrderTraverse(BiTreeT,int(*Visit)(ElemTyped))

{

if(T){

if(Visit(T->data))

if(PreOrderTraverse(T->l,Visit))

if(PreOrderTraverse(T->r,Visit))returnOK;

returnERROR;

}

else

returnOK;

}

intmain()

{

BiTreeroot;

CreateBiTree(&root);

PreOrderTraverse(root,printelem);

}

程序代码:

#include

#include

usingnamespacestd;

#defineERROR0;

#defineOK1;

typedefintElemType;

typedefstructBinaryTree//二叉树结点结构

{

ElemTypedata;

structBinaryTree*l;

structBinaryTree*r;

}*BiTree,BiNode;

intCreateSubTree(BiTree*T,ElemType*all,inti)//创建二叉树

{

if((all[i]==0)||i>16)

{

*T=NULL;

returnOK;

}

*T=(BiNode*)malloc(sizeof(BiNode));//动态分配结点空间

if(*T==NULL)returnERROR;

(*T)->data=all[i];

CreateSubTree(&((*T)->l),all,2*i);

CreateSubTree(&((*T)->r),all,2*i+1);

}

intCreateBiTree(BiTree*T)//初始化二叉树

{

ElemTypeall[16]={0,1,2,3,0,0,4,5,0,0,0,0,6,0,0,0,};

CreateSubTree(T,all,1);

}

intprintelem(ElemTyped)//输出d的值

{

printf("%d\n",d);

return0;

}

intPreOrderTraverse(BiTreeT,int(*Visit)(ElemTyped))//先序遍历

{

if(T){

if(Visit(T->data))

if(PreOrderTraverse(T->l,Visit))

if(PreOrderTraverse(T->r,Visit))returnOK;

returnERROR;

 }

 else

  returnOK;

}

intInOrderTraverse(BiTreeT,int(*Visit)(ElemTyped))//中序遍历

{

if(T){

if(PreOrderTraverse(T->l,Visit))

if(Visit(T->data))

if(PreOrderTraverse(T->r,Visit))returnOK;

returnERROR;

 }

 else

  returnOK;

}

intPostOrderTraverse(BiTreeT,int(*Visit)(ElemTyped))//后序遍历

{

if(T){

if(PreOrderTraverse(T->l,Visit))

if(PreOrderTraverse(T->r,Visit))

if(Visit(T->data))returnOK;

returnERROR;

 }

 else

  returnOK;

}

intmain()

{

intn;

BiTreeroot;

CreateBiTree(&root);

printf("先序遍历结果:

");

PreOrderTraverse(root,printelem);

printf("中序遍历结果:

");

InOrderTraverse(root,printelem);

printf("后序遍历结果:

");

PostOrderTraverse(root,printelem);

scanf("%d",&n);

return1;

}

#include

#include

usingnamespacestd;

#defineERROR0;

#defineOK1;

typedefstructBiNode{

intdata;

structBiNode*lchild,*rchild;

}BiNode,*BiTree;

intn=0;

inti;

intCreateBiTree(BiTree*T)

{

inta[100];

intm=0;

printf("请输入总结点数量:

");

cin>>m;

for(i=0;i

printf("请输入结点的值,表示空结点,表示结束\n");

i=0;

while(i

=999)

{

cin>>n;

a[i]=n;

i++;

}

for(i=0;i<100;i++){

if(a[i]==0){

T=NULL;

return0;

}

else{

if(!

(*T=(BiNode*)malloc(sizeof(BiNode))))return0;

(*T)->data=a[i];

CreateBiTree(&((*T)->lchild));

CreateBiTree(&((*T)->rchild));

}

}

return1;

}

intPreOrderTraverse(BiTreeT)

{

if(T==NULL)return0;

printf("%d",T->data);

PreOrderTraverse(T->lchild);

PreOrderTraverse(T->rchild);

return1;

}

intmain()

{

BiTreeroot;

CreateBiTree(&root);

PreOrderTraverse(root);

intn;

scanf("%d",&n);

}

一、程序源码:

1、方法1:

2、方法2:

二、运行结果与测试分析:

1、方法1:

2、方法2:

七、实验心得与体会:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2