二叉树的各种基本作实验报告.docx
《二叉树的各种基本作实验报告.docx》由会员分享,可在线阅读,更多相关《二叉树的各种基本作实验报告.docx(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验项目二叉树的操作最好的沉淀项目类型综合型完成 时间2009-11-2实 验 目 的及要 求掌握二叉树的存储实现;掌握二叉树的遍历思想; 掌握二叉树的 常见算法的程序实现。【实验过程】(实验步骤、绘图、记录、数据、分析、结果)实验内容:a.输入完全二叉树的先序序列, 用 #代表虚结点 (空指针),如 ABD#CE#F# 建 立二叉树,实现先序、中序和后序以及按层次遍历序列。b. 求所有叶子及结点总数。实验步骤:#include #include #define MAX10#define STACK_INIT_SIZE 40/ 存储空间初始分配量#define STACKINCREMENT 1
2、0 / 存储空间分配增量typedef struct BiTNodechar data;struct BiTNode *lchild; struct BiTNode *rchild;BiTNode,*BiTree;/ 将 BiTree 定义为指向二叉链表结点结构的指针类型BiTNode *bt;typedefstruct BiTree *base; int top;intstacksize;SqStack;typedef structBiTree *base;int front; int rear;SqQueue;void InitStack(SqStack &S)/ 构造一个空栈 SS.ba
3、se=(BiTree*) malloc(STACK_INIT_SIZE*sizeof(BiTree); if (!S.base) exit (0);/存储分配失败S.top=0;/ 空表长度为 0 S.stacksize=STACK_INIT_SIZE;/初始存储容量/InitStackint StackEmpty(SqStack &S)/ 判断栈 S 是否是空栈,是返回1,否则返回 0 if(S.top=0)return 1;elsereturn 0;/StcakEmptyvoid Push(SqStack &S, BiTree e)/ 插入元素 e 为新的栈顶元素 , if (S.top=
4、S.stacksize)/ 栈满追加空间S.base=(BiTree*) realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(BiTree);if(!S.base)exit(0);/存储分配失败S.stacksize+=STACKINCREMENT;S.baseS.top+=e;/Pushvoid Pop(SqStack &S,BiTree &e)/若栈不空则删除S 的栈顶元素,并用e返回其值if (S.top=0)printf( 栈空 );/栈为空exit(0);e=S.base-S.top;/Popint GetTop(SqStack S,
5、 BiTree &e)/若栈不空则用 e 返回 S 的栈顶元素if (S.top=0)elseprintf( 栈空 ); return 0;/栈为空/GetTope=S.baseS.top-1; return 1;void InitQueue(SqQueue &Q)/ 构建新队列 QQ.base=(BiTree*)malloc(MAX * sizeof(BiTree); Q.front=Q.rear=0;int QueueEmpty(SqQueue Q)/ 判断队列是否是一个空队列if(Q.front=Q.rear) return 1;return 0;void EnQueue(SqQueue
6、 &Q,BiTree e)/ 将元素 e 插入到队列 Q 中if(Q.rear+1)%MAX=Q.front) exit(0);Q.baseQ.rear=e;Q.rear=(Q.rear+1)%MAX;void DeQueue(SqQueue &Q,BiTree &e)/ 将非空队列 Q 的队头元素出队列if(Q.front=Q.rear) exit(0);e=Q.baseQ.front; Q.front=(Q.front+1)%MAX;/int n0,n;/n0 统计叶子结点数, n 统计总的结点数void PreCreatBiTree(BiTree &bt)/ 按照先序建立二叉树的二叉链表
7、#表示虚结点char ch; ch=getchar(); if(ch=#)bt=NULL;elsebt=(BiTree)malloc(sizeof(BiTNode); bt-data=ch;PreCreatBiTree(bt-lchild);PreCreatBiTree(bt-rchild);void InOrderTraverse1(BiTree bt)/ 利用递归算法中序遍历一个二叉树if(bt)InOrderTraverse1(bt-lchild); printf(%2c,bt-data); InOrderTraverse1(bt-rchild);void PreOrderTravers
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二叉 各种 基本 实验 报告
限制150内