二叉树的建立及凹入表打印Word文档下载推荐.docx
- 文档编号:15212681
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:8
- 大小:168.58KB
二叉树的建立及凹入表打印Word文档下载推荐.docx
《二叉树的建立及凹入表打印Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《二叉树的建立及凹入表打印Word文档下载推荐.docx(8页珍藏版)》请在冰豆网上搜索。
完成日期:
2013-11-6
问题描述:
1)用先序递归过程建立二叉树(存储结构:
二叉链表)
输入数据按先序遍历所得序列输入,当某结点左子树或右子树为空时,输入‘*’号,如输入abc**d**e**得到的二叉树为:
e
ad
b
c
(选做:
由二叉树的先序序列和中序序列建立一棵二叉树。
)
2)编写递归算法,计算二叉树中叶子结点的数目。
3)按凹入表方式输出该二叉树。
算法思想:
定义二叉树的数据结构类型
typedefstructBiTNode//
{
chardata;
structBiTNode*lchild,*rchild;
//左右子树
}BiTNode,*BiTree;
1.先序递归创建二叉树
BiTreeCreateBiTree(BiTree&
T)
{
T=(BiTree)malloc(sizeof(BiTNode));
T->
data='
\0'
;
charch;
scanf("
%c"
&
ch);
if(ch!
='
*'
{
data=ch;
lchild=CreateBiTree(T->
lchild);
rchild=CreateBiTree(T->
rchild);
}
elseif(ch=='
returnNULL;
if((T->
lchild==NULL&
&
T->
rchild==NULL)||(T->
rchild->
data!
)||(T->
lchild->
))
returnT;
}
2.计算叶子节点
intLEAF(BiTree&
T)
{
if(T->
rchild==NULL)
return1;
elseif(T->
returnLEAF(T->
rchild==NULL)
else
return(LEAF(T->
lchild)+LEAF(T->
rchild));
3.凹入表打印二叉树
voidPrint(BiTree&
T,intt)
inti;
if(T)
{
Print(T->
rchild,t+5);
for(i=0;
i<
t;
i++)
printf("
"
);
%5c\n"
T->
data);
lchild,t+5);
4.主函数
intmain()
BiTreeT;
*******************************************\n"
****************欢迎打印二叉树*************\n"
请按先序遍历所得数据输入(当某节点是叶子节点时用'
表示):
\n"
T=CreateBiTree(T);
叶子节点的个数是:
%d\n"
LEAF(T));
打印该二叉树结构后的结果为:
Print(T,5);
system("
pause"
设计描述:
源程序:
#include<
stdio.h>
stdlib.h>
malloc.h>
#defineMaxsize100
#defineOVERFLOW-1
#defineERROR0
intpi=0;
typedefstructBiTNode//定义二叉树的数据结构类型
BiTreeCreateBiTree(BiTree&
T)//先序递归创建二叉树
T)//计算叶子节点
T,intt)
测试结果:
用户使用说明:
请按先序遍历所得数据输入(当某节点是叶子时用‘*’表示):
(输入先序遍历序列)
叶子节点的个数是:
(显示叶子节点的个数)
打印该二叉树结构后的结果为:
(显示二叉树结构直观凹入图)
心得体会:
通过对二叉树的学习与同学之间的交流,我对二叉树及其递归建立和遍历有了更加深入的了解,感觉学到了很多东西,感受到了学习的乐趣。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二叉 建立 凹入表 打印