- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
文档内容来源于:网络收集整理,word版本可编辑,欢迎下载支持
文档内容来源于:网络收集整理,word版本可编辑,欢迎下载支持
一 ,试验目的
试验 5:二叉树的建立及遍历
(第十三周星期三 7,8 节)
文档内容来源于:网络收集整理,word版本可编辑,欢迎下载支持
文档内容来源于:网络收集整理,word版本可编辑,欢迎下载支持
学会实现二叉树结点结构与对二叉树的基本操作;
把握对二叉树每种操作的详细实现,学会利用递归方法编写对二叉树这种递归数据结构进行处理的算法;
二 ,试验要求
仔细阅读与把握与本试验相关的教材内容;
编写完整程序完成下面的试验内容并上机运行;
整理并上交试验报告;
三,试验内容
1.编写程序任意输入二叉树的结点个数与结点值,构造一棵二叉树,采 用三种递归遍历算法 (前序,中序,后序 )对这棵二叉树进行遍历并运算出二叉树
的高度;
2 .编写程序生成下面所示的二叉树,并采纳中序遍历的非递归算法对此二叉树进行遍历;
四,摸索与提高
如何运算二叉链表储备的二叉树中度数为 1 的结点数?
已知有—棵以二叉链表储备的二叉树, root 指向根结点, p 指向二叉树中任一结点,如何求从根结点到 p 所指结点之间的路径 .
文档内容来源于:网络收集整理,word版本可编辑,欢迎下载支持
文档内容来源于:网络收集整理,word版本可编辑,欢迎下载支持
/*----------------------------------------
05-1_递归遍历二叉树 .cpp -- 递归遍历二叉树的相关操作
对递归遍历二叉树的每个基本操作都用单独的函数来实现
水上飘 2021 年写
----------------------------------------*/
// ds05.cpp : Defines the entry point for the console application.
//
#include stdafx.h #include iostream
typedef char ElemType; using namespace std;
typedef struct BiTNode { ElemType data;
//左右孩子指针
BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
//动态输入字符按先序创建二叉树void CreateBiTree(BiTree T) {
char ch;
ch = cin.get();
if(ch == ) {
T = NULL;
}
else {
if(ch == \n) {
cout 输入未终止前不要输入回车, 要终止分支请输入空格! endl;
}
else {
// 生成根结点
T = (BiTNode * )malloc(sizeof(BiTNode)); if(.T)
cout 内存安排失败! endl;
T-data = ch;
// 构造左子树CreateBiTree(T-lchild);
// 构造右子树CreateBiTree(T-rchild);
文档内容来源于:网络收集整理,word版本可编辑,欢迎下载支持
文档内容来源于:网络收集整理,word版本可编辑,欢迎下载支持
}
}
}
//输出 e 的值
ElemType PrintElement(ElemType e) { cout e ;
return e;
}
//先序遍历
void PreOrderTraverse(BiTree T) { if (T .= NULL) {
//打印结点的值PrintElement(T-data);
//遍历左孩子PreOrderTraverse(T-lchild);
//遍历右孩子PreOrderTraverse(T-rchild);
}
}
//中序遍历
void InOrderTraverse(BiTree T) { if (T .= NULL) {
//遍历左孩子InOrderTraverse(T-lchild);
//打印结点的值PrintElement(T-data);
//遍历右孩子InOrderTraverse(T-rchild);
}
}
//后序遍历
void PostOrderTraverse(BiTree T) { if (T .= NULL) {
//遍历左孩子
PostOrderTraverse(T-lchild);
//遍历右孩子PostOrderTraverse(T-rchild);
//打印结点的值
PrintElement(T-data);
}
文档内容来源于:网络收集整理,word版本可编辑,欢迎下载支持
文档内容来源于:网络收集整理,word版本可编
您可能关注的文档
最近下载
- 诗词大会训练题库(九宫格) (1).ppt VIP
- 防撞护栏安全交底.docx VIP
- DBJ51T 137-2020 四川省塔式起重机装配式基础技术标准 .pdf VIP
- 2025年四川省国家工作人员法治素养测评三考试题及参考答案.docx VIP
- 中铁三局渝万高铁站前3标预制简支箱梁四角高差汇报-1.pptx VIP
- 2024年肠内营养支持的护理实践.pptx
- 2025年一级造价工程师《建设工程技术与计量(土建)》真题及答案解析.docx VIP
- 企业经营中的供应链管理.pptx
- 数字浪潮下:大学生微信使用行为与媒体素养的深度关联研究.docx
- 基于痕迹检验的交通事故鉴定案例分析.pptx VIP
原创力文档


文档评论(0)