数据结构上机实验报告二叉树Word下载.docx
《数据结构上机实验报告二叉树Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构上机实验报告二叉树Word下载.docx(9页珍藏版)》请在冰点文库上搜索。
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;
left=NULL;
right=NULL;
returnpNode;
pTreeTBT_Insert(ElemTypetarget,pTreeT*ppTree)
pTreeTNode;
=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
right);
voidBT_PreOrder(pTreeTroot)
visit(root);
BT_PreOrder(root->
}
voidBT_PreOrderNoRec(pTreeTroot)
stack<
treeT*>
s;
while((NULL!
=root)||!
s.empty())
s.push(root);
root=root->
left;
root=s.top();
s.pop();
right;
voidBT_InOrder(pTreeTroot)
BT_InOrder(root->
voidBT_InOrderNoRec(pTreeTroot)
voidBT_PostOrder(pTreeTroot)
BT_PostOrder(root->
voidBT_PostOrderNoRec(pTreeTroot)
voidBT_LevelOrder(pTreeTroot)
queue<
q;
treeT*treePtr;
=root);
q.push(root);
while(!
q.empty())
treePtr=q.front();
q.pop();
visit(treePtr);
=treePtr->
left)
q.push(treePtr->
right)
#endif
stdlib.h>
time.h>
#defineMAX_CNT5
#defineBASE100
voidmain(intargc,char*argv[])
inti;
chartemp;
pTreeTroot=NULL;
srand((unsigned)time(NULL));
请输入元素:
\nA.自动生成.\nB.手动输入.\n"
);
do{
temp=getchar();
}
while(!
(temp=='
A'
||temp=='
a'
B'
b'
));
if((temp)=='
||(temp)=='
){
for(i=0;
i<
MAX_CNT;
i++)
{
BT_Insert(rand()%BASE,&
root);
}
elseif((temp)=='
printf("
请输入元素,元素以#结尾\n"
while((temp=getchar())!
='
#'
)
BT_Insert(temp,&
//前序
PreOrder:
\n"
BT_PreOrder(root);
PreOrdernorecursion:
BT_PreOrderNoRec(root);
//中序
InOrder:
BT_InOrder(root);
InOrdernorecursion:
BT_InOrderNoRec(root);
//后序
PostOrder:
BT_PostOrder(root);
//层序
LevelOrder:
BT_LevelOrder(root);