华清远见嵌入式学习——春节作业——2.4日

作业要求:

编写程序实现二叉树的创建,三种遍历自己销毁

作业答案:

作业代码截图

作业代码效果图

作业代码

#include "myhead.h"// 定义二叉树节点结构体
struct Tree 
{int value;  //编号(值)struct Tree* left;  //左子树struct Tree* right;  //右子树
};// 创建新节点
struct Tree* create_node(int value) 
{//动态申请空间struct Tree* new = (struct Tree*)malloc(sizeof(struct Tree));//节点内部初始化new->value = value;new->left = NULL;new->right = NULL;return new;
}// 创建二叉树
struct Tree* create_tree() 
{//创建根节点,编号(值)为1struct Tree* root = create_node(1);//创建根节点的左孩子节点,编号(值)为2root->left = create_node(2);//创建根节点的右孩子节点,编号(值)为3root->right = create_node(3);//以下两个步骤可以放在需要增加二叉树节点时再进行,此处只是为了一次性构建出一个比较详细的二叉树//创建根节点的左孩子节点的左孩子节点,编号(值)为4root->left->left = create_node(4);//创建根节点的左孩子节点的右孩子节点,编号(值)为5root->left->right = create_node(5);return root;
}// 前序遍历  依次遍历根节点、左子树、右子树,直到所有节点都被遍历完毕
void preorder(struct Tree* node) 
{//当节点不为空时if (node != NULL) {//打印当前节点的编号(或者说,值)printf("%d ", node->value);//递归调用前序遍历函数,传参为当前节点的左孩子节点preorder(node->left);//递归调用前序遍历函数,传参为当前节点的右孩子节点preorder(node->right);}
}// 中序遍历  依次遍历左子树、根节点、右子树,直到所有节点都被遍历完毕
void midorder(struct Tree* node) 
{//当节点不为空时if (node != NULL){//递归调用中序遍历函数,传参为当前节点的左孩子节点midorder(node->left);//打印当前节点的编号(或者说,值)printf("%d ", node->value);//递归调用中序遍历函数,传参为当前节点的右孩子节点midorder(node->right);}
}// 后序遍历  依次遍历左子树、右子树、根节点,直到所有节点都被遍历完毕
void lastorder(struct Tree* node) 
{//当节点不为空时if (node != NULL){//递归调用后序遍历函数,传参为当前节点的左孩子节点lastorder(node->left);//递归调用后序遍历函数,传参为当前节点的右孩子节点lastorder(node->right);//打印当前节点的编号(或者说,值)printf("%d ", node->value);}
}// 销毁二叉树  采用后序的方式进行二叉树的销毁,这样可以完全销毁二叉树
void destroy_tree(struct Tree* node) 
{//当节点不为空时if (node != NULL) {//递归调用销毁函数,传参为当前节点的左孩子节点destroy_tree(node->left);//递归调用销毁函数,传参为当前节点的右孩子节点destroy_tree(node->right);//释放当前节点的空间,即销毁当前节点free(node);}
}//主函数
int main(int argc,const char * argv[]) 
{//定义二叉树的根节点,并同时创建一个二叉树struct Tree* root = create_tree();//前序遍历二叉树printf("前序遍历: ");preorder(root);//中序遍历二叉树printf("\n中序遍历: ");midorder(root);//后序遍历二叉树printf("\n后序遍历: ");lastorder(root);//为了结果美观,加一个换行putchar(10);//销毁二叉树destroy_tree(root);return 0;
}

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

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

相关文章

idea创建spring项目

一、环境 window10 IDEA 2022.2.3 maven-3.8.6 二、创建spring项目 1、新建Maven项目 File -> New -> Project 然后如下图选中Maven Archetype,在Archetype,选中maven-archetype-webapp,点击Create 2、配置maven 默认是使用IDEA内…

管理类联考-复试-英语-听力

文章目录 准备工作1.如何准备英语听力?2.听力学习注意事项一:培养良好的听音习惯,听读顺序要合理3.听力学习注意事项二:边听边记关键词 训练短期记忆能力4.听力学习注意事项三:熟记语篇衔接词把握信息走向5.听力学习注…

少儿编程 中国电子学会图形化编程2022年1月等级考试Scratch三级真题解析(选择题、判断题)

1.默认小猫角色和气球角色都是显示状态,小猫程序如下图所示,气球没有程序,点击绿旗,舞台上最终显示的效果是?( ) A:可能出现6个不同位置的小猫和6个小球 B:可能出现6个…

Multisim14.0仿真(四十九)共阴极/阳极7段数码管驱动设计

一、74LS47/48简介: 74LS47/48芯片是一种常用的七段数码管译码器驱动器,常用在各种数字电路和单片机系统的显示系统中. 二、74LS47/48引脚说明及定义: 7段显示译码器74LS47/48是输出低/高电平有效的译码器,74LS47/48除了有实现7段显示译码器基本功能的输入(DCBA)和输出(Ya…

Unity类银河恶魔城学习记录1-9 PlayerWallSilde源代码 P36

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Player.cs using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; us…

gerrit 安装插件

1.插件下载 gerrit 3.9 插件,打开链接去右上角搜索插件名称,找到合适的版本,由于我这儿需要安装gerrit 3.9.1 的 autosubmitter 插件,但是好像没有 3.9 的,有下面这俩 上面那个可以理解为基于插件的主分支代码进行构…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之MenuItemGroup组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之MenuItemGroup组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、MenuItemGroup组件 该组件用来展示菜单MenuItem的分组。 子组件 无 接…

高通android设备themal读取cpu温度

以msm8953的themal分布信息,主要是下图的位置: 这其中 cpu相关的themal的位置有: 读取thermal 温度数据可以通过以下几个步骤: 获取sensor_info rootmsm8953_64:/ # cat /sys/module/msm_thermal/sensor_info tsens:tsens_tz_se…

我用全志V851s做了一个魔法棒,使用Keras训练手势识别模型控制一切电子设备

这是一个可以直接启动原神的魔法棒~ 原神,启动! 这是一个万全的解决方案!只需要花80元再动动手,就可以将哈利波特的魔杖与人工智能结合到一起!它就是用全志V851s做的赛博魔杖! 这个魔法手杖有啥亮点 手势…

Go协程揭秘:轻量、并发与性能的完美结合

目录 1. Go协程简介什么是Go协程?Go协程与线程的比较Go协程的核心优势 2. Go协程的基本使用创建并启动Go协程使用匿名函数创建Go协程Go协程与主函数 3. Go协程的同步机制1. 通道 (Channels)2. sync.WaitGroup3. 互斥锁 (sync.Mutex) 4. Go协程的高级用法1. 选择器 (…

每日一题——LeetCode1394.找出数组中的幸运数

方法一 桶数组计数法 又要保存整数的数值和他出现的频次,那么碰到一个整数num就让res[num],那么循环res数组,如果res[i]0则代表i没有在arr中出现过,res[i]n则代表i在arr中出现n次 因为题目要求只返回最大的幸运数,所…

计算机软件能力认证考试CCF-202312-1 仓库规划

#自己跑的测试没问题&#xff0c;不知道为啥就是不能满分 原理比较绕&#xff0c;就是让数组中一行不断地与其他行进行比较&#xff0c;最终得到各自的索引 #include <iostream> using namespace std; int main() {int n;int m;cin>>n>>m; int array[n][m];…

【C/C++ 08】简单计算器

一、题目 输入算术表达式&#xff0c;可包含空格&#xff0c;检查算术表达式的合法性&#xff0c;若算术表达式不合法&#xff0c;打印错误类型&#xff0c;若合法&#xff0c;则进行运算&#xff0c;打印计算结果。 二、算法 1. 将输入的算术表达式字符串去除空格。 2. 检查…

电源模块欠压保护点测试方法分享 纳米软件

电源欠压保护原理 欠压保护是指当电源电压低于一定值时&#xff0c;电源的保护功能会及时断开电路&#xff0c;避免设备受到损坏。电源欠压保护一般是通过一个或多个传感器来检测电压&#xff0c;当电压低于设定值时就会触发电源的保护功能&#xff0c;断开电路&#xff0c;保护…

猫用空气净化器真的能除菌吗?除毛可以用宠物空气净化器吗?

猫咪给我们带来了无尽的欢乐&#xff0c;但它们换毛时家里到处都是猫毛。我们会在地板、沙发上发现一大堆&#xff0c;甚至衣服也难逃其影响。这些浮毛中可能携带着微生物和尘螨等。对于免疫力较低的老年人、孩子和孕妇来说&#xff0c;他们更容易感染这些微生物。而对于鼻炎患…

[Tomcat问题]--使用Tomcat 10.x部署项目时,出现实例化Servlet类[xxx]异常

[Tomcat问题]–使用Tomcat 10.x部署项目时&#xff0c;出现实例化Servlet类[xxx]异常 本片博文在知乎同步更新 环境 OS: Windows 11 23H2Java Version: java 21.0.1 2023-10-17 LTSIDE: IntelliJ IDEA 2023.3.3Maven: Apache Maven 3.9.6Tomcat: Tomcat 10.1.18 ReleasedSer…

vulhub中Adminer远程文件读取漏洞复现(CVE-2021-43008)

Adminer是一个PHP编写的开源数据库管理工具&#xff0c;支持MySQL、MariaDB、PostgreSQL、SQLite、MS SQL、Oracle、Elasticsearch、MongoDB等数据库。 在其版本1.12.0到4.6.2之间存在一处因为MySQL LOAD DATA LOCAL导致的文件读取漏洞。 参考链接&#xff1a; https://gith…

JAVA Studynote(7-8)

JAVA Studynote(7-8) 1.DOS系统 ​ *接受指令 *解析指令 *执行指令 2.相对路径和绝对路径 *相对路径 ​ *从当前目录开始定位&#xff0c;形成的一个路径 *绝对路径 ​ *从顶级目录d&#xff0c;开始定位&#xff0c;形成的路径 ​ *示例&#xff1a; 3.常用DOS指令 …

12种算法优化CNN-BiLSTM-Attention多特征输入单步预测,机器学习预测全家桶,持续更新,MATLAB代码...

截止到本期&#xff0c;一共发了12篇关于机器学习预测全家桶MATLAB代码的文章。参考文章如下&#xff1a; 1.五花八门的机器学习预测&#xff1f;一篇搞定不行吗&#xff1f; 2.机器学习预测全家桶&#xff0c;多步预测之BiGRU、BiLSTM、GRU、LSTM&#xff0c;LSSVM、TCN、CNN&…

【lesson8】高并发内存池Central Cache层释放内存的实现

文章目录 Central Cache层释放内存的流程Central Cache层释放内存的实现 Central Cache层释放内存的流程 当thread_cache过长或者线程销毁&#xff0c;则会将内存释放回central cache中的&#xff0c;释放回来时–use_count。当use_count减到0时则表示所有对象都回到了span&am…