深圳宝安西乡网站建设免费企业黄页下载

web/2025/10/5 18:21:09/文章来源:
深圳宝安西乡网站建设,免费企业黄页下载,有没有装修做团购的网站,wordpress微信扫码登录目录 数据结构实验十 树遍历应用一、【实验目的】二、【实验内容】三、【实验源代码】⭐ CPP版⭐ c语言版 四、实验结果 数据结构实验十 树遍历应用 一、【实验目的】 1、了解树的建立方法 2、掌握树与二叉树的转化及其遍历的基本方法 3、掌握递归二叉树遍历算法的应用 二、… 目录 数据结构实验十 树遍历应用一、【实验目的】二、【实验内容】三、【实验源代码】⭐ CPP版⭐ c语言版 四、实验结果 数据结构实验十 树遍历应用 一、【实验目的】 1、了解树的建立方法 2、掌握树与二叉树的转化及其遍历的基本方法 3、掌握递归二叉树遍历算法的应用 二、【实验内容】 1.构造一棵药品信息树,树的形态如下图所示打印出先序遍历、后序遍历的遍历序列。 2.编写一个层序遍历算法利用队列结构按层次同一层自左至右输出树中所有的结点。 3.将树结构转化为二叉树编写二叉树非递归中序遍历算法并输出遍历序列。 三、【实验源代码】 ⭐ CPP版 #include iostream #include queue #include stackusing namespace std;// 多叉树节点 struct Node {string name; // 节点名称vectorNode* nodes; // 子节点指针数组Node(string name, vectorNode* nodes) : name(name), nodes(nodes) {} };// 二叉树节点 struct BinaryNode {string name; // 节点名称BinaryNode *left; // 左子节点指针BinaryNode *right; // 右子节点指针BinaryNode(string name, BinaryNode *left, BinaryNode *right) : name(name), left(left), right(right) {} };// 按照题意初始化多叉树 Node* init() {// 第四层Node* n31 new Node(神经系统用药, {});Node* n32 new Node(消化系统用药, {});Node* n33 new Node(呼吸系统用药, {});Node* n34 new Node(心脑血管系统用药, {});Node* n35 new Node(抗感染药, {});Node* n36 new Node(其他用药, {});// 第三层vectorNode* ns1 {n31, n32, n33, n34, n35, n36};Node* n21 new Node(中成药, {});Node* n22 new Node(化学药品, ns1);// 第二层vectorNode* ns2 {n21, n22};Node* n11 new Node(双规制处方药, ns2);Node* n12 new Node(单规制处方药, {});// 第一层Node* root new Node(药品信息, {n11, n12}); // 根节点return root; }// 队列实现层序遍历 void LevelOrderByQueue(Node* root) {queueNode* q;q.push(root);cout 队列实现层序遍历: endl;while (!q.empty()) {Node* t q.front(); // 取出队首节点q.pop(); // 队首节点出队cout t-name ; // 输出节点名称for (Node* node : t-nodes) {q.push(node); // 将子节点加入队列}} }// 二叉树的非递归遍历(栈) void InOrder(BinaryNode* root) {stackBinaryNode* s;BinaryNode* t root;cout endl;cout 二叉树的中序遍历: endl;while (t ! nullptr || !s.empty()) {if (t ! nullptr) {s.push(t);t t-left; // 移动到左子节点} else {t s.top(); // 弹出栈顶节点s.pop();cout t-name ; // 输出节点名称t t-right; // 移动到右子节点}} }// 多叉树转二叉树 void createBinaryTree(Node* root, BinaryNode* broot) {if (root nullptr) {return;}broot-name root-name; // 转换节点名称vectorNode* nodes root-nodes;if (nodes.empty()) {return;}// 左儿子右兄弟BinaryNode* left new BinaryNode(, nullptr, nullptr);createBinaryTree(nodes[0], left); // 递归构建左子树BinaryNode* t left;for (int i 1; i nodes.size(); i) {Node* node nodes[i];BinaryNode* right new BinaryNode(node-name, nullptr, nullptr); // 构建右子树createBinaryTree(nodes[i], right); // 递归构建右子树t-right right; // 连接右兄弟节点t right;}broot-left left; // 连接左子树 }// 多叉树的先序遍历 void preOrder(Node* root) {if (root nullptr) {return;}cout root-name ; // 输出节点名称for (Node* n : root-nodes) {preOrder(n); // 递归遍历子节点} }// 多叉树的后序遍历 void postOrder(Node* root) {if (root nullptr) {return;}for (Node* n : root-nodes) {postOrder(n); // 递归遍历子节点}cout root-name ; // 输出节点名称 }int main() {Node* root init();// 打印先后序遍历cout 多叉树的先序遍历: endl;preOrder(root); // 先序遍历cout \n多叉树的后序遍历: endl;postOrder(root); // 后序遍历cout endl;LevelOrderByQueue(root); // 层序遍历BinaryNode* broot new BinaryNode(, nullptr, nullptr);createBinaryTree(root, broot); // 多叉树转二叉树InOrder(broot); // 中序遍历二叉树return 0; }⭐ c语言版 #include stdio.h #include stdlib.h// 多叉树节点 typedef struct Node {char* name;struct Node** nodes;int numOfNodes; } Node;// 二叉树节点 typedef struct BinaryNode {char* name;struct BinaryNode* left;struct BinaryNode* right; } BinaryNode;// 按照题意初始化多叉树 Node* init() {// 第四层Node* n31 (Node*)malloc(sizeof(Node));n31-name 神经系统用药;n31-nodes NULL;n31-numOfNodes 0;Node* n32 (Node*)malloc(sizeof(Node));n32-name 消化系统用药;n32-nodes NULL;n32-numOfNodes 0;Node* n33 (Node*)malloc(sizeof(Node));n33-name 呼吸系统用药;n33-nodes NULL;n33-numOfNodes 0;Node* n34 (Node*)malloc(sizeof(Node));n34-name 心脑血管系统用药;n34-nodes NULL;n34-numOfNodes 0;Node* n35 (Node*)malloc(sizeof(Node));n35-name 抗感染药;n35-nodes NULL;n35-numOfNodes 0;Node* n36 (Node*)malloc(sizeof(Node));n36-name 其他用药;n36-nodes NULL;n36-numOfNodes 0;// 第三层Node** ns1 (Node**)malloc(6 * sizeof(Node*));ns1[0] n31;ns1[1] n32;ns1[2] n33;ns1[3] n34;ns1[4] n35;ns1[5] n36;Node* n21 (Node*)malloc(sizeof(Node));n21-name 中成药;n21-nodes NULL;n21-numOfNodes 0;Node* n22 (Node*)malloc(sizeof(Node));n22-name 化学药品;n22-nodes ns1;n22-numOfNodes 6;// 第二层Node** ns2 (Node**)malloc(2 * sizeof(Node*));ns2[0] n21;ns2[1] n22;Node* n11 (Node*)malloc(sizeof(Node));n11-name 双规制处方药;n11-nodes ns2;n11-numOfNodes 2;Node* n12 (Node*)malloc(sizeof(Node));n12-name 单规制处方药;n12-nodes NULL;n12-numOfNodes 0;// 第一层Node* root (Node*)malloc(sizeof(Node));root-name 药品信息;root-nodes (Node**)malloc(2 * sizeof(Node*));root-nodes[0] n11;root-nodes[1] n12;root-numOfNodes 2;return root; }// 队列实现层序遍历 void LevelOrderByQueue(Node* root) {Node** queue (Node**)malloc(1000 * sizeof(Node*));int front 0;int rear 0;queue[rear] root;printf(队列实现层序遍历:\n);while (front rear){Node* t queue[front];printf(%s , t-name);if (t-nodes ! NULL){for (int i 0; i t-numOfNodes; i){queue[rear] t-nodes[i];}}}free(queue); }// 二叉树的中序遍历(栈) void InOrder(BinaryNode* root) {BinaryNode** stack (BinaryNode**)malloc(1000 * sizeof(BinaryNode*));int top -1;BinaryNode* t root;printf(\n二叉树的中序遍历:\n);// 中序先输出左子树再输出根只要左子树非空就一直把左子树入栈while (t ! NULL || top ! -1){if (t ! NULL){stack[top] t;t t-left;}else{t stack[top--]; // 说明当前栈顶元素的左子树为空可以输出栈顶元素printf(%s , t-name);t t-right; // 根输出后接着继续遍历右子树}}free(stack); }// 多叉树转二叉树 BinaryNode* createBinaryTree(Node* root, BinaryNode* broot) {if (root NULL)return NULL;broot-name root-name;Node** nodes root-nodes;if (nodes NULL)return NULL;// 左儿子右兄弟BinaryNode* left (BinaryNode*)malloc(sizeof(BinaryNode));createBinaryTree(nodes[0], left);BinaryNode* t left;for (int i 1; i root-numOfNodes; i){Node* node nodes[i];BinaryNode* right (BinaryNode*)malloc(sizeof(BinaryNode));createBinaryTree(nodes[i], right);t-right right;t right;}broot-left left;return broot; }// 多叉树的先序遍历 void preOrder(Node* root) {if (root NULL)return;printf(%s , root-name);Node** nodes root-nodes;if (nodes NULL)return;for (int i 0; i root-numOfNodes; i){preOrder(nodes[i]);} }// 多叉树的后序遍历 void postOrder(Node* root) {if (root NULL)return;Node** nodes root-nodes;if (nodes NULL){printf(%s , root-name);return;}for (int i 0; i root-numOfNodes; i){postOrder(nodes[i]);}printf(%s , root-name); }int main() {Node* root init();// 打印先后序遍历printf(多叉树的先序遍历:\n);preOrder(root);printf(\n多叉树的后序遍历:\n);postOrder(root);printf(\n);LevelOrderByQueue(root);BinaryNode* broot (BinaryNode*)malloc(sizeof(BinaryNode));createBinaryTree(root, broot);InOrder(broot);return 0; } 四、实验结果 多叉树的先序遍历: 药品信息 双规制处方药 中成药 化学药品 神经系统用药 消化系统用药 呼吸系统用药 心脑血管系统用药 抗感染药 其他用药 单规制处方药 多叉树的后序遍历: 中成药 神经系统用药 消化系统用药 呼吸系统用药 心脑血管系统用药 抗感染药 其他用药 化学药品 双规制处方药 单规制处方药 药品信息 队列实现层序遍历: 药品信息 双规制处方药 单规制处方药 中成药 化学药品 神经系统用药 消化系统用药 呼吸系统用药 心脑血管系统用药 抗感染药 其他用药 二叉树的层序遍历: 中成药 神经系统用药 消化系统用药 呼吸系统用药 心脑血管系统用药 抗感染药 其他用药 化学药品 双规制处方药 单规制处方药 药品信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87504.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络科技网站排名互联网舆情处置公司

2024年7月15日,JumpServer开源堡垒机正式发布v4.0版本。在JumpServer开源堡垒机v4.0版本的设计过程中,JumpServer开源项目组继续秉持“内外兼修”的原则,并且开始迈步走向全球化,同时进一步提升用户的使用体验,真正用心…

多个域名绑定同一网站德州网站制作

2024年6月7日,深圳中赢娱乐控股集团受邀来到江西省宜春市袁州区就“短剧文旅”项目展开深度座谈,并与飞剑潭乡达成合作意向。 下午2:30,深圳中赢控股集团董事李平进带团队一行12人,访问宜春市袁州区,宜春市副市长谢萍、…

泰安网站建设公司网盘网页版

重点看一下:逻辑与,出现多层if嵌套的情况 实际开发中,与门应该是最容易也是最应该被优化的。 合并后的条件代码会表述“实际上只有一次条件检查,只不过有多个并列条件需要检查,从而使这一次检查的用意更清晰。当然&am…

惠州网站建设方案托管百度竞价广告的位置

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 Oracle中表的外键是保证系统参照完整性的手段,而参照完整性是指分布在两个表中的列所满足的具有主从性质的约束关系。外键涉及到两个表,其中一个称之为父项表,另一个…

网站开发视频会议插件网站产品内容在数据库

OpenSSL功能远胜于KeyTool,可用于根证书,服务器证书和客户证书的管理 这里使用的是Win32OpenSSL_Light-1_0_1e.exe http://www.slproweb.com/products/Win32OpenSSL.html 1,构建根证书 构建根证书前,需要构建随机数文件&#xff0…

网站内容如何自动关联新浪微博网站维护内容

旅游专业运用VR虚拟仿真教学的教学优势主要包括: 1. 增强教学效果:VR技术能够提供身临其境的体验,使学生更容易理解和记住某些概念和理论。例如,学生可以通过虚拟旅行来了解某个国家的文化、历史和景点,这将比传统的课…

免费的网站服务器永康网站设计

题目: 对抗内卷(大佬经常说别再卷了) 有一门课程n个学生选,期末要写一篇论文每个同学写的字数有一个下限和一个上限,课程的成绩是按学生字数的排名来给分的,排名越高分数越高,每个同学都想得到…

幻灯网站源码云优化seo软件

常见的JavaScript设计模式 一、模块模式(Module Pattern)二、单例模式(SingIeton Pattern)三、工厂模式(Factory Pattern)四、观察者模式(Observer Pattern) 常见的JavaScript设计模式包括 模块模式、 在…

广东网站建设智搜宝重庆网站推广运营公司

目录 专栏导读一、题目描述二、输入描述三、输出描述四、Java算法源码五、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷)》。 刷的越多…

太原手机模板建站电商平台开发报价

当你想实现点击并拖动某个dic元素来调整其大小的时候&#xff0c;我们可以通过如下代码(可直接复制粘贴运行)实现效果&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport&qu…

怎么建设网站挣钱wordpress单部电影主题

实现效果&#xff1a; 1.单击包时&#xff0c;显示包时的添加项 2.单击包里程&#xff0c;显示包里程的添加项 二 代码实现&#xff1a; 给select添加change事件 获取当前select的value 根据value判断对象显示其添加项框 <script> $(document).ready(function() {$(#typ…

旅游网站设计开题报告济南简单网站制作排名公司

1.class是设置标签的类&#xff0c;id是设置标签的标识;2. 使用方法不同&#xff1a; class属性用于指定元素属于何种样式的类,如样式表可以加入.content1 { color: red; background: #ff80c0 } 使用方法&#xff1a;class"content1" id属性用于定义一个元素的独…

专业品牌设计网站建设荣耀借壳上市公司

BF算法、男朋友算法&#xff0c;哈哈 要实现动态分区分配&#xff0c;需要考虑三个方面的问题。分别是数据结构、分区分配算法、分区的分配与回收操作。 首数据结构 这里我们使用的是空闲分区链&#xff0c;采用双向链表表示空闲分区。 具体实现如下&#xff1a; typedef …

网站霸屏对网站好吗重庆建设工程岗位培训管理系统

linux图形界面 Linux 本身是没有图形化界面的&#xff0c;linux只是一个基于命令行的操作系统&#xff0c;所谓的图形化界面系统只不过中 Linux 下的应用程序。没有图形界面linux还是linux&#xff0c;很多装linux的WEB服务器就根本不装X服务器。 这一点和 Windows 不一样。W…

仿网站建设虚拟主机空间发布网站

对于一个预算有限的创业者来说&#xff0c;选择合适的办公场地是一个重要的决策。不同的办公场地形式有各自的优缺点&#xff0c;需要根据创业者的具体情况和需求来权衡。 一般来说&#xff0c;有以下几种常见的办公场地形式&#xff1a; - 家庭办公&#xff1a;这是最节省成本…

qq靓号申请免费网站网上信息发布平台

leetcode 150道题 计划花两个月时候刷完&#xff0c;今天完成了两道(1-2)150&#xff1a; &#xff08;88. 合并两个有序数组&#xff09;题目描述&#xff1a; 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 n…

嘉兴 做网站 推广典当行网站源码

目录 概述配置flink 配置kyuubi 配置kyuubi-defaults.confkyuubi-env.shhive 验证启动kyuubibeeline 连接使用hive catlogsql测试 结束 概述 flink 版本 1.17.1、kyuubi 1.8.0、hive 3.1.3、paimon 0.5 整合过程中&#xff0c;需要注意对应的版本。 注意以上版本 配置 ky…

特色专业建设验收网站江门手机模板建站

二叉树序号题号1 94. 二叉树的中序遍历 295. 不同的二叉搜索树 II396. 不同的二叉搜索树4 98. 验证二叉搜索树 5100. 相同的树6101. 对称二叉树7102. 二叉树的层次遍历8103. 二叉树的锯齿形层次遍历9104. 二叉树的最大深度10105. 从前序与中序遍历序列构造二叉树11106. 从中序与…

品牌vi设计理念关键词排名优化如何

网络安全是确保计算机网络免受未经授权的访问、攻击、破坏、更改或泄露的一系列措施和技术的综合体。以下是关于网络安全的更详细的知识点总结&#xff1a; 防火墙和边界安全: 实施防火墙以监控和控制网络流量。边界防御策略包括网络地址转换&#xff08;NAT&#xff09;和端口…

网站建设必须提供良好的用户体验wordpress 删除底部

ribbonribbon conceptribbon核心组件IRule模仿源码重写轮询ribbon concept spring cloud ribbon 是基于Netflix ribbon实现的一套客户端负载均衡的工具。 简单的说&#xff0c; Ribbon是Netflix发布的开源项目&#xff0c; 主要功能是提供客户端的软件负载均衡算法和服务 完善的…