2021年数据结构实验五(二叉树的建立及遍历)题目和源程序.docx

2021年数据结构实验五(二叉树的建立及遍历)题目和源程序.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 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版本可编

文档评论(0)

徐老师资料铺 + 关注
实名认证
内容提供者

资料杂货铺

1亿VIP精品文档

相关文档