二叉树操作输出深度结点数叶结点数递归.docx
- 文档编号:11681697
- 上传时间:2023-03-30
- 格式:DOCX
- 页数:10
- 大小:46.96KB
二叉树操作输出深度结点数叶结点数递归.docx
《二叉树操作输出深度结点数叶结点数递归.docx》由会员分享,可在线阅读,更多相关《二叉树操作输出深度结点数叶结点数递归.docx(10页珍藏版)》请在冰豆网上搜索。
二叉树操作输出深度结点数叶结点数递归
实验三 二叉树的操作及应用
一、实验目的
1、掌握二叉树的特点,以及二叉链表的结构
2、熟练掌握二叉树的各种操作,如建立、遍历、查找和输出
3、利用己经掌握的进行实际应用
二、实验要求
1、编写程序实现二叉树的各种运算,并在此基础上设计主函数,使其完成如下功能:
(1)按先序建立二叉树,如“ABC□□DE□G□□F□□□”,(□表示空格)。
(2)建立二叉树后,判断二叉树空否,同时输出二叉树的深度。
(3)建立二叉树后,判断二叉树空否,同时输出二叉树的结点数。
(4)建立二叉树后,判断二叉树空否,同时输出二叉树的叶子点数。
2、编写一个子函数,用非递归算法中序遍历二叉树。
三、程序运算结果截图
四、程序源代码
1.
#include
#include
structBinTreeNode;
typedefstructBinTreeNode*PBinTreeNode;
structBinTreeNode
{
charinfo;
PBinTreeNodellink;
PBinTreeNoderlink;
};
typedefstructBinTreeNode*BinTree;
BinTreeCreateBiTree()
{
charch;
BinTreet;
scanf("%c",&ch);
if(ch=='')
t=NULL;
else
{
t=(BinTree)malloc(sizeof(structBinTreeNode));
t->info=ch;
t->llink=CreateBiTree();
t->rlink=CreateBiTree();
}
returnt;
}
intIsEmptyTree(BinTreet) //创建二叉树
{
if(t==NULL)
return0;
else
return1;
}
intGetDepth(BinTreet) //返回二叉树的深度
{
intl,r,c;
l=r=c=0;
if(t)
{
l=GetDepth(t->llink);
r=GetDepth(t->rlink);
c=(l>r?
l:
r);
returnc+1;
}
else
return0;
}
intNode(BinTreet) //返回二叉树的结点数
{
if(t)
returnNode(t->llink)+Node(t->rlink)+1;
else
return0;
}
intLeaf(BinTreet) //返回二叉树的叶子点数
{
if(t)
{ if((t->llink==NULL)&&(t->rlink==NULL))
return1;
else
returnLeaf(t->llink)+Leaf(t->rlink);
}
else
return0;
}
main()
{
BinTreet;
printf("pleaseinput:
\n");
t=CreateBiTree();
if(IsEmptyTree==0)
printf("二叉树为空");
else
printf("二叉树不为空\n");
printf("二叉树的深度是:
\n");
printf("%d:
\n",GetDepth(t));
printf("二叉树的结点数是:
\n");
printf("%d:
\n",Node(t));
printf("二叉树的叶子点数是:
\n");
printf("%d:
\n",Leaf(t));
}
2.
#include
#include
structBinTreeNode;
typedefstructBinTreeNode*PBinTreeNode;
structBinTreeNode
{
charinfo;
PBinTreeNodellink;
PBinTreeNoderlink;
};
structBinTreeNodeBinTreeNode;
typedefstructBinTreeNode*BinTree;
#include
#include
#include
typedefintDataType;
structSeqStack
{
intMAXNUM;
intt;
DataType*s;
};
typedefstructSeqStack*PSeqStack;
PSeqStackcreateEmptyStack_seq(intm) //创建空栈
{ PSeqStackpastack=(PSeqStack)malloc(sizeof(structSeqStack));
if(pastack!
=NULL)
{
pastack->s=(DataType*)malloc(sizeof(DataType)*m);
if(pastack->s){
pastack->MAXNUM=m;
pastack->t=-1;
returnpastack;
}
elsefree(pastack);
}
printf("Outofspace!
\n");
returnNULL;
}
intIsEmpty(PSeqStackpalist)//判断空栈
{
if(palist->t==-1)
return0;
else
return1;
}
voidpush_seq(PSeqStackpastack,charx) //在栈中插入元素x
{
if(pastack->t>=pastack->MAXNUM-1)
printf("Overflow!
\n");
else
{
pastack->t=pastack->t+1;
pastack->s[pastack->t]=x;
}
}
DataTypetop_seq(PSeqStackpastack) //取栈顶元素
{
if(pastack->t==-1)
printf("It'isempty!
\n");
else
return(pastack->s[pastack->t]);
}
voidpop_seq(PSeqStackpastack) //出栈
{
if(pastack->t==-1)printf("Underflow!
\n");
else
pastack->t=pastack->t-1;
}
BinTreeCreateBiTree() //创建二叉树
{
charch;
BinTreet;
scanf("%c",&ch);
if(ch=='')
t=NULL;
else
{
t=(BinTree)malloc(sizeof(structBinTreeNode));
t->info=ch;
t->llink=CreateBiTree();
t->rlink=CreateBiTree();
}
returnt;
}
intIsEmptyTree(BinTreet) //判断二叉树是否为空
{
if(t==NULL)
return0;
else
return1;
}
BinTreeroot(BinTreet) //返回根结点
{
returnt;
}
BinTreeleftChild(BinTreet) //返回左子树
{
if(t)
returnt->llink;
returnNULL;
}
BinTreerightChild(BinTreet) //返回右子树
{
if(t)
returnt->rlink;
returnNULL;
}
voidInOrderTravel(BinTreet) //二叉树中序遍历非递归算法法
{
BinTreec=t;
PSeqStacks=createEmptyStack_seq(20);
if(t==NULL)return;
while(c!
=NULL||!
IsEmpty(s))
{
while(c!
=NULL)
{
push_seq(s,c->info);
c=leftChild(c);
}
c=top_seq(s);
printf("%c",c);
printf("%c",top_seq(s));
pop_seq(s);
c=rightChild(c);
}
printf("\n");
}
voidInorder(BinTreet)//二叉树中序遍历递归算法
{ if(t==NULL)
return;
Inorder(leftChild(t));
printf("%c",t->info);
Inorder(rightChild(t));
}
main()
{
BinTreet;
printf("pleaseinput:
\n");
t=CreateBiTree();
if(IsEmptyTree==0)
printf("二叉树为空");
else
printf("二叉树不为空\n");
printf("二叉树递归遍历:
\n");
Inorder(t);printf("\n");
printf("二叉树递归遍历:
\n");
Inorder(t);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二叉 操作 输出 深度 结点 递归
![提示](https://static.bdocx.com/images/bang_tan.gif)