数据结构上机实验报告二叉树.docx
- 文档编号:11589108
- 上传时间:2023-03-19
- 格式:DOCX
- 页数:9
- 大小:583.81KB
数据结构上机实验报告二叉树.docx
《数据结构上机实验报告二叉树.docx》由会员分享,可在线阅读,更多相关《数据结构上机实验报告二叉树.docx(9页珍藏版)》请在冰豆网上搜索。
数据结构上机实验报告二叉树
实现代码:
#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)
{
stack
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)
{
stack
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)
{
queue
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"); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 上机 实验 报告 二叉