二叉树的应用数据结构课程设计Word文档格式.docx
- 文档编号:22272015
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:21
- 大小:161.32KB
二叉树的应用数据结构课程设计Word文档格式.docx
《二叉树的应用数据结构课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《二叉树的应用数据结构课程设计Word文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
3.非递归的先序遍历,中序遍历
4.二叉树的层次遍历
5.判断此二叉树是否是完全二叉树
6.二叉树的左右孩子的交换
7.通过递归对二叉树进行遍历。
二叉树的非递归遍历主要采用利用队进行遍历。
此后的判断此二叉树是否是完全二叉树也才采用队,而二叉树的左右孩子的交换则采用的是一个简单的递归。
#include<
iostream>
usingnamespacestd;
#defineMAXSIZE100
intsign=0;
voidmenu();
//
typedefstructBiTNode
{
chardata;
BiTNode*left_child,*right_child;
}BiTNode,*BiTree;
intCreateBiTree(BiTree&
T)//创建二叉树
{charch;
cout<
<
"
请输入数据(#为结束):
"
;
cin>
>
ch;
if(ch=='
#'
)T=NULL;
else
{
if(!
(T=newBiTNode)){
cout<
Overflow!
//noalloction
return0;
}
T->
data=ch;
CreateBiTree(T->
left_child);
//createleftchild
right_child);
//createrightchild
return1;
}
//判断此树是否是完全二叉树
intLevelOrder1(BiTree&
T)
{
BiTreestack[MAXSIZE];
BiTreep;
intfront,rear;
front=-1,rear=0;
stack[rear]=T;
while(rear!
=front)
{
front++;
p=stack[front];
if((p->
left_child==NULL)&
&
(p->
right_child))
sign=1;
if(p->
left_child)
{
rear++;
stack[rear]=p->
left_child;
}
right_child)
right_child;
}
voidOutput(BiTree&
T)//输出二叉树
T){
空树!
\n"
return;
}//空树
T->
data<
//输出根结点
if(T->
left_child)Output(T->
//输出左子树
right_child)Output(T->
//输出右子树
intDepth(BiTree&
T)//求树深
inti,j;
T)return0;
i=Depth(T->
j=Depth(T->
return(i>
j?
i:
j)+1;
intNode(BiTree&
T)//求结点数
return1+Node(T->
left_child)+Node(T->
intLeaf(BiTree&
T)//求叶子结点
left_child&
!
right_child)return1;
//仅有根结点
returnLeaf(T->
left_child)+Leaf(T->
//返回叶子结点的数目
voidPreOrder(BiTree&
T)//先序遍历算法DLR
T)return;
//递归调用的结束条件
//访问根结点的数据域
PreOrder(T->
//先序递归遍历T的左子树
//先序递归遍历T的右子树
voidInOrder(BiTree&
T)//中序遍历算法LDR
InOrder(T->
voidPostOrder(BiTree&
T)//后序遍历算法LRD
PostOrder(T->
//非递归先序遍历
intNRPreOrder(BiTree&
{BiTreestack[100],p;
inttop;
if(T==NULL)
return1;
top=-1;
p=T;
while(!
(p==NULL&
top==-1)){
while(p!
=NULL){
p->
if(top<
100-1)
top++;
stack[top]=p;
else{
栈溢出"
endl;
p=p->
if(top==-1)
else{
p=stack[top];
top--;
p=p->
//非递归中序遍历
intNRInOrder(BiTree&
cout<
//层次遍历
voidLevelOrder(BiTree&
{BiTreequeue[100];
intfront,rear;
return;
front=-1;
rear=0;
queue[rear]=T;
while(front!
=rear){
front++;
queue[front]->
if(queue[front]->
left_child!
rear++;
queue[rear]=queue[front]->
right_child!
=NULL)
//*******************************左右子树交换*****************************
/*将结点的左右子树交换*/
/*BiTNode*swap(BiTNode&
BiTNode*t,*t1,*t2;
if(T==NULL)t=NULL;
else
t=(BiTNode*)malloc(sizeof(BiTNode));
t->
data=T->
data;
t1=swap(T->
t2=swap(T->
left_child=t2;
right_child=t1;
return(t);
voidprint(BiTNode&
T)
if(T!
=NULL)
printf("
%c"
T->
data);
if(T->
=NULL||T->
{
printf("
("
);
print(b->
if(b->
=NULL)printf("
"
)"
}
}*/
intPreOrderTraverse(BiTreeT)
return0;
BiTreet;
if(T->
left_child||T->
right_child)
t=T->
T->
left_child=T->
right_child=t;
PreOrderTraverse(T->
}
//菜单
voidmenu()
{cout<
*****************************************************************************"
(主菜单)>
0.建立二叉树>
1.二叉树树深>
2.二叉树结点数>
3.二叉树的叶子结点>
4.二叉树的先序遍历>
5.二叉树的中序遍历>
6.二叉树的后序遍历>
7.二叉树的非递归先序遍历>
8.二叉树的非递归中序遍历>
9.二叉树的层次遍历>
10.判断此树是否是完全二叉树>
11.左右孩子交换>
12.退出>
//主函数
voidmain()
intbr,a;
BiTreeT;
br=CreateBiTree(T);
while
(1){
menu();
请输入选择的命令-->
cin>
a;
if(a>
=0||a<
=12)
switch(a){
case0:
{cout<
建立后的二叉树为:
Output(T);
system("
pause"
break;
case1:
该树的树深为:
Depth(T)<
case2:
该树的结点数:
Node(T)<
case3:
该树的叶子结点为:
Leaf(T)<
case4:
该树以先序遍历输出为:
PreOrder(T);
case5:
该树以中序遍历输出为:
InOrder(T);
case6:
该树以后序遍历输出为:
PostOrder(T);
case7:
该树的非递归先序遍历输出为:
NRPreOrder(T);
case8:
该树的非递归中序遍历输出为:
NRInOrder(T);
case9:
该树的层次遍历:
LevelOrder(T);
case10:
LevelOrder1(T);
if(sign==1)
{
cout<
这不是一个完全二叉树。
}
else
这是一个完全二叉树。
//break;
}
system("
case11:
PreOrderTraverse(T);
左右孩子已经替换成功"
case12:
exit(-1);
4运行结果:
4.1用二叉链表创建二叉树:
4.2主菜单
4.3求二叉树树深:
4.4二叉树结点数:
4.5二叉树的中序遍历:
4.6二叉树的层次遍历:
4.7左右孩子交换:
4.8左右孩子交换后的中序遍历:
4.9左右孩子交换后的层次遍历:
5.课程设计总结:
此次课程设计使我对书本的知识有进一步了解。
同时也是我知道自己的一些不足,这次课程设计我是在书本与同学的帮助下完成的。
它并不难,但是我没有自己独自完成是我的错误。
6参考书目:
1.《数据结构》课本
2.《数据结构基本操作》
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二叉 应用 数据结构 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)