数据结构上机实验报告二叉树.docx

上传人:b****4 文档编号:6784788 上传时间:2023-05-10 格式:DOCX 页数:9 大小:583.81KB
下载 相关 举报
数据结构上机实验报告二叉树.docx_第1页
第1页 / 共9页
数据结构上机实验报告二叉树.docx_第2页
第2页 / 共9页
数据结构上机实验报告二叉树.docx_第3页
第3页 / 共9页
数据结构上机实验报告二叉树.docx_第4页
第4页 / 共9页
数据结构上机实验报告二叉树.docx_第5页
第5页 / 共9页
数据结构上机实验报告二叉树.docx_第6页
第6页 / 共9页
数据结构上机实验报告二叉树.docx_第7页
第7页 / 共9页
数据结构上机实验报告二叉树.docx_第8页
第8页 / 共9页
数据结构上机实验报告二叉树.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构上机实验报告二叉树.docx

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

数据结构上机实验报告二叉树.docx

数据结构上机实验报告二叉树

实现代码:

#ifndefTREE_H

#defineTREE_H

#include

#include

#include

#include

#include

usingnamespacestd;

typedefintElemType;

typedefstructtreeT

{

ElemTypekey;

structtreeT*left;

structtreeT*right;

}treeT,*pTreeT;

staticvoidvisit(pTreeTroot)

{

if(NULL!

=root)

{

printf("%d\n",root->key);

}

}

staticpTreeTBT_MakeNode(ElemTypetarget)

{

pTreeTpNode=(pTreeT)malloc(sizeof(treeT));

assert(NULL!

=pNode);

pNode->key=target;

pNode->left=NULL;

pNode->right=NULL;

returnpNode;

}

 

pTreeTBT_Insert(ElemTypetarget,pTreeT*ppTree)

{

pTreeTNode;

assert(NULL!

=ppTree);

Node=*ppTree;

if(NULL==Node)

{

return*ppTree=BT_MakeNode(target);

}

if(Node->key==target)//不允许出现相同的元素

{

returnNULL;

}

elseif(Node->key>target)//向左

{

returnBT_Insert(target,&Node->left);

}

else

{

returnBT_Insert(target,&Node->right);

}

}

voidBT_PreOrder(pTreeTroot)

{

if(NULL!

=root)

{

visit(root);

BT_PreOrder(root->left);

BT_PreOrder(root->right);

}

}

voidBT_PreOrderNoRec(pTreeTroot)

{

stacks;

while((NULL!

=root)||!

s.empty())

{

if(NULL!

=root)

{

visit(root);

s.push(root);

root=root->left;

}

else

{

root=s.top();

s.pop();

root=root->right;

}

}

}

 

voidBT_InOrder(pTreeTroot)

{

if(NULL!

=root)

{

BT_InOrder(root->left);

visit(root);

BT_InOrder(root->right);

}

}

 

voidBT_InOrderNoRec(pTreeTroot)

{

stacks;

while((NULL!

=root)||!

s.empty())

{

if(NULL!

=root)

{

s.push(root);

root=root->left;

}

else

{

root=s.top();

visit(root);

s.pop();

root=root->right;

}

}

}

 

voidBT_PostOrder(pTreeTroot)

{

if(NULL!

=root)

{

BT_PostOrder(root->left);

BT_PostOrder(root->right);

visit(root);

}

}

 

voidBT_PostOrderNoRec(pTreeTroot)

{

}

 

voidBT_LevelOrder(pTreeTroot)

{

queueq;

treeT*treePtr;

assert(NULL!

=root);

q.push(root);

while(!

q.empty())

{

treePtr=q.front();

q.pop();

visit(treePtr);

if(NULL!

=treePtr->left)

{

q.push(treePtr->left);

}

if(NULL!

=treePtr->right)

{

q.push(treePtr->right);

}

}

}

 

#endif

 

#include

#include

#include

#defineMAX_CNT5

#defineBASE100

 

voidmain(intargc,char*argv[])

{

inti;

chartemp;

pTreeTroot=NULL;

srand((unsigned)time(NULL));

printf("请输入元素:

\nA.自动生成.\nB.手动输入.\n");

do{

temp=getchar();

}

while(!

(temp=='A'||temp=='a'||temp=='B'||temp=='b'));

if((temp)=='A'||(temp)=='a'){

for(i=0;i

{

BT_Insert(rand()%BASE,&root);

}

}

elseif((temp)=='B'||(temp)=='b'){

printf("请输入元素,元素以#结尾\n");

while((temp=getchar())!

='#')

BT_Insert(temp,&root);

}

//前序

printf("PreOrder:

\n");

BT_PreOrder(root);

printf("\n");

printf("PreOrdernorecursion:

\n");

BT_PreOrderNoRec(root);

printf("\n");

//中序

printf("InOrder:

\n");

BT_InOrder(root);

printf("\n");

printf("InOrdernorecursion:

\n");

BT_InOrderNoRec(root);

printf("\n");

//后序

printf("PostOrder:

\n");

BT_PostOrder(root);

printf("\n");

//层序

printf("LevelOrder:

\n");

BT_LevelOrder(root);

printf("\n");

}

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

当前位置:首页 > 考试认证 > 公务员考试

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

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