实验十一二叉树的进一步操作.doc

实验十一二叉树的进一步操作.doc

ID:62047879

大小:99.00 KB

页数:11页

时间:2021-04-16

实验十一二叉树的进一步操作.doc_第1页
实验十一二叉树的进一步操作.doc_第2页
实验十一二叉树的进一步操作.doc_第3页
实验十一二叉树的进一步操作.doc_第4页
实验十一二叉树的进一步操作.doc_第5页
资源描述:

《实验十一二叉树的进一步操作.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、个人收集整理勿做商业用途浙江大学城市学院实验报告课程名称      数据结构基础     实验项目名称 实验十一二叉树的进一步操作    学生姓名  专业班级  学号 实验成绩  指导老师(签名) 日期2014-12-25一.实验目的和要求1、熟练掌握二叉树二叉链表的存储结构。2、进一步掌握在二叉链表上的二叉树操作的实现原理与方法。3、掌握中序遍历的非递归算法。二.实验内容1、实现以下说明的操作函数,添加到实验十所写的头文件binary_tree.h中,并建立主函数文件test4_2.cpp,编写测试语句加以验证。操作函数如下:①voidInOrder2(BT

2、reeNode *BT );//非递归中序遍历二叉树BT②voidChangeBTree(BTreeNode*&BT);//将二叉树中的所有结点的左右子树进行交换:③IntCountBTree(BTreeNode*BT);//统计二叉树中的所有结点数并返回④BTreeNode*CopyBTree(BTreeNode*BT);//复制一棵二叉树,并返回复制得到的二叉树根结点指针2、选做:实现以下说明的操作函数,添加到头文件binary_tree.h中,并在主函数文件test4_2.cpp中添加相应语句进行测试。①intSimilarTrees(BTreeNode

3、*BT1,BTreeNode*BT2)//判断两棵二叉树是否相似。所谓相似是指如果两棵二叉树具有相同的树型,则称它们是相似的,否则不是。②BTreeNode*RemoveLeaves(BTreeNode*BT1)//摘树叶:摘除一棵二叉树上的所有叶子结点后返回一棵新的二叉树。3、填写实验报告,实验报告文件取名为report11.doc。4、上传实验报告文件report11.doc、源程序文件test4_2.cpp及binary_tree.h到Ftp服务器上自己的文件夹下。三.函数的功能说明及算法思路个人收集整理勿做商业用途(包括每个函数的功能说明,及一些重要函

4、数的算法实现思路)结构定义:二叉树:struct BTreeNode{ElemType data;ﻩBTreeNode*lchild;ﻩBTreeNode*rchild;};顺序栈:structStack{BTreeNode **stack; //存栈元素inttop;int MaxSize;};Operations:二叉树: voidInitBTree(BTreeNode*&BT )//初始化二叉树BTvoidCreateBTree(BTreeNode*&BT,char*a)//根据字符串a所给出的广义表表示的二叉树建立二叉链表存储结构 voidPrintB

5、Tree(BTreeNode*BT )//输出二叉树BT  void ClearBTree(BTreeNode *&BT)//清除二叉树BTvoidInOrder2( BTreeNode*BT)//非递归中序遍历二叉树BTvoidChangeBTree(BTreeNode *&BT)//将二叉树中的所有结点的左右子树进行交换  int CountBTree(BTreeNode*BT)//统计二叉树中的所有结点数并返回 BTreeNode *CopyBTree(BTreeNode*BT)//复制一棵二叉树,并返回复制得到的二叉树根结点指针 intSimilarT

6、rees(BTreeNode*BT1,BTreeNode*BT2)//判断两棵二叉树是否相似。所谓相似是指如果两棵二叉树具有相同的树型,则称它们是相似的,否则不是。BTreeNode*RemoveLeaves(BTreeNode *BT1)//摘树叶:摘除一棵二叉树上的所有叶子结点后返回一棵新的二叉树。顺序栈:voidInitStack(Stack&S)//初始化栈为空,把栈设置为空并完成栈空间的动态存储分配voidPush(Stack&S,BTreeNode*item)//元素item进栈,即插入到栈顶BTreeNode*Pop(Stack&S)//删除栈顶

7、元素并返回boolEmptyStack(Stack&S)//判断S是否为空,若为空则返回true,否则返回falsevoidClearStack(Stack&S)//清除栈S中的所有元素,释放动态存储空间个人收集整理勿做商业用途end GeneralTree算法:void InOrder2(BTreeNode*BT )//非递归中序遍历二叉树BT{ 定义堆栈sﻩ定义树结点P 初始化栈s   while(p不为空或者s不为空)  {ﻩif(p不为空)ﻩ将p进栈 ;P的值重新赋为p的左孩子ﻩif(s不为空)ﻩﻩ将出栈的值赋给p;输出p的根的值 ;P等于p的右边孩子

8、; ﻩ} }voidChangeBTr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。