C++二叉树递归方法存入和三种递归方法读出(前序,中序,后序)

news2024/10/6 20:40:47

#include <stdio.h>
#include <malloc.h>
 
typedef struct op       //定义子树结构  
{
    int data;
    struct op *lchild;
    struct op *rchild;    
}treestruct;

treestruct *createtree() //这里这种表达形式意思是bittree类型的函数  最终要返回bittree类型的值 
{
    treestruct *tree = NULL; //定义并初始化子树 
    int num;
    scanf("%d",&num);   //给每个节点传入一个值 一定要按照从左到右 从上到下的顺序读入数据 
    if(num > 0)
    {
        tree = (treestruct*)malloc(sizeof(treestruct));//说明节点的空间 
        tree->data = num;   //传入结点的值 
        tree->lchild = createtree();//使用嵌套 再对子树的左孩子传值  
        tree->rchild = createtree(); // 传值的时候要记住我们每个节点有默认有两个孩子,需要给每个孩子赋值0 才能表示没有子树了 
    }
    return tree;//返回根 
}
//每次传值都是先对左孩子下定义 如果一直有左孩子 那就是一直对左孩子初始化  

void previsit(treestruct *tree)//前序读出 
{
    if(tree == NULL)
        return ;
    printf("%5d",tree->data);//从根开始 先读出根 然后左孩子然后右孩子 
    previsit(tree->lchild);
    previsit(tree->rchild);
}

void midvisit(treestruct *tree)
{
    if(tree == NULL)
        return ;
    midvisit(tree->lchild);
    printf("%5d",tree->data);//从最左边的数开始先读出这个数然后双亲节点的数然后右孩子的数 
    midvisit(tree->rchild);
}

void lastvisit(treestruct *root)
{
    if(root == NULL)
        return ;
    lastvisit(root->lchild);
    lastvisit(root->rchild);
    printf("%5d",root->data);//最左边的数开始先读出左孩子的数然后右孩子的数然后双亲节点的数 
}

int main()
{
    treestruct *tree = createtree();
    lastvisit(tree);
    return 0;
}

下面是我自己用笔手写的读入数据和前序,中序和后序读出过程

读入过程

 前序

 中序

 后序

 如果有用麻烦点个赞,手写不容易.

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

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

相关文章

【Linux】版本管理器Git

&#x1f3d6;️作者&#xff1a;malloc不出对象 ⛺专栏&#xff1a;Linux的学习之路 &#x1f466;个人简介&#xff1a;一名双非本科院校大二在读的科班编程菜鸟&#xff0c;努力编程只为赶上各位大佬的步伐&#x1f648;&#x1f648; 目录 前言一、Git是什么二、Git有什么…

开源C#代码生成器,专注.NET,Sqlserver,最简单,最干净,支持自编码的开源工具,SmartSoftHelp 开发辅助优化工具

开源C#代码生成器&#xff0c;专注.NET&#xff0c;Sqlserver&#xff0c;最简单&#xff0c;最干净&#xff0c;支持自编码的开源工具&#xff0c;SmartSoftHelp 开发辅助优化工具&#xff01; 下载地址&#xff1a;https://pan.baidu.com/s/1XLL_fLxVTw4erYZLj8-MzA?pwd888…

搭建python运行环境

安装Miniconda3 清华镜像 https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/ 下载 安装 next————agree————这俩选哪个都行&#xff0c;他选的第二个————安装路径———— 配置系统环境变量 Path miniconda3所在的路径 D:\Autils\miniconda3 Scri…

ChatGPT 最有可能取代哪些职业?

ChatGPT 的应用场景ChatGPT 最可能取代哪些职业&#xff1f;写在最后 ChatGPT 的应用场景 ChatGPT 的应用场景大体上可以归类为三大模块。 第一类是 代码相关 的任务场景。包含程序语言之间的相互转换&#xff08;如 python 转 java&#xff09;、程序命令的生成、代码 bug 的…

Gateway新一代网关

Gateway功能&#xff1a;路由 过滤 一、概述 官网地址 不使用网关存在的问题&#xff1a; 1、客户端需要记录不同微服务地址&#xff0c;增加客户端的复杂性 2、每个后台微服务都需要认证 3、http 发请求&#xff0c;涉及到跨域 4、后台新增微服务&#xff0c;不能动态知道地…

【持久层框架】mybatis-plus超详细讲解

文章目录 一、简介二、愿景三、特性四、支持数据库五、快速指南步骤1、创建数据库 mybatis_plus2、导入相应的依赖3、连接数据库4、编写代码5、小结 六、配置日志七、常用注解八、CRUD扩展Insert 插入参数说明主键生成策略分布式系统唯一id生成雪花算法主键自增 更新操作参数说…

纪念一下自己做的第一款开发板

文章目录 1. 硬件电路2. 成品展示3. 遇到的问题4. HelloWorld 前言&#xff1a;之前乐鑫搞活动白嫖了10个ESP32-S2模组&#xff0c;想着把它给利用了&#xff0c;然后先从一个开发板做起&#xff0c;等玩明白了再去做一些自己的设计&#xff0c;从网上找了一些资料就开始干&…

【★前后端的交互★】Servlet API

欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#xff1a;重难点★✔ 蓝色文字表示&#…

了解一下Spring核心概念——IOC IOC容器 DI Bean

文章目录 1 Spring家族2 Spring发展史3 Spring系统架构3.1 系统架构图3.2 学习路线 4 Spring核心概念4.1 目前项目中的问题4.2 IOC、IOC容器、Bean、DI4.2.1 IOC&#xff08;Inversion of Control&#xff09;控制反转4.2.2 DI&#xff08;Dependency Injection&#xff09;依赖…

(免费分享)springboot,vue物业管理系统

一、项目技术 后端框架&#xff1a;springboot 前端框架&#xff1a;elementUIvue 主要实现了用户登录、社区信息展示、物业公告、社区设施、物业人员信息。 进入物业系统管理后端。实现了社区的管理&#xff0c;包括基本信息管理、周边设施管理、物业公告管理。楼盘管理包括楼…

AI对话-Free Chat免费无限制

目录 前言 使用方法 提问 推荐线路 前言 chat.4 和 chat.5 线路的响应改成通过在 Netlify 的部署来响应了。Netlify 不像 Vercel 那样还限制 Edge Function 的调用次数,很适合部署本项目。现在这两个线路的成本最低了,最优先推荐大家使用。 使用方法 提问 比如我问他:…

docker学习笔记(3)

目录 Docker命令 进程相关命令 镜像相关命令 查看镜像 Docker 数据管理 数据卷 大家在使用Xftp的时候&#xff0c;千万要先用本地端ping一下虚拟机IP&#xff0c;不然你在那里创建几次都没有用。 Docker命令 进程相关命令 # 启动Docker命令 systemctl start docker # 停…

网络基础学习:ip地址的知识

网络基础学习&#xff1a;ip地址的知识 IP地址是什么&#xff1f;如何查询计算机ipip分为几类IPv4和IPv6IPv4和IPv6的通信 IP地址是什么&#xff1f; IP地址是指用于标识在网络上的设备或节点的一组数字&#xff0c;它是Internet协议&#xff08;IP&#xff09;中使用的一种地…

【C++】C++入门知识

&#x1f601;作者&#xff1a;日出等日落 &#x1f514;专栏&#xff1a;C 不要去等谁&#xff0c;所有的不期而遇都在路上。 前言 C是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库&#xff0c;以及编程范式等。熟悉C语言之后&…

通过点云获取碰撞向量

T&#xff1a;what Y&#xff1a;why W&#xff1a;how Y 针对点云的无序性&#xff0c;无法通过坐标索引进行查询&#xff0c;常常将点云地图转换其他类型的地图&#xff0c;如Octomap&#xff0c;从而进行碰撞检测&#xff1b; W 为快速进行机器人与障碍物的位置计算&…

C高级day3

1.编写一个名为myfirstshell.sh的脚本&#xff0c;它包括以下内容。 1、包含一段注释&#xff0c;列出您的姓名、脚本的名称和编写这个脚本的目的 2、和当前用户说“hello 用户名” 3、显示您的机器名 hostname 4、显示上一级目录中的所有文件的列表 5、显示变量PATH和HOM…

【前端技术】Vue3 02:基础语法

接下来介绍下 Vue 的基础语法&#xff0c;包括渐进式框架、单文件组件、组合式 API 和选项式 API等基础要点和 v-xx 指令和其余基础语法&#xff0c;这和官方教程的顺序不大一致&#xff0c;我认为先学习 v-xx 指令可能更有助于大家的理解及学习。 目录 1 前言 1.1 单文件组件…

【Linux】Linux中的编辑器vim

&#x1f3d6;️作者&#xff1a;malloc不出对象 ⛺专栏&#xff1a;Linux的学习之路 &#x1f466;个人简介&#xff1a;一名双非本科院校大二在读的科班编程菜鸟&#xff0c;努力编程只为赶上各位大佬的步伐&#x1f648;&#x1f648; 目录 前言一、vim的概念二、命令模式2…

SpringBoot【开发实用篇】---- 数据层解决方案

SpringBoot【开发实用篇】---- 数据层解决方案 1. SQL数据源技术持久化技术数据库技术 2. NoSQLSpringBoot整合Redis安装基本操作整合 SpringBoot整合MonggoDB安装基本操作整合 SpringBoot整合ES安装基本操作整合 开发实用篇前三章基本上是开胃菜&#xff0c;从第四章开始&…

“1+X+N”模式助力企业数字化转型

近期&#xff0c;中电金信顺利完成某股份制银行“基于战略解析与业务架构的全行科技规划项目”交付。针对客户的实际业务需求&#xff0c;中电金信采用“1XN”服务模式&#xff0c;服务客户全面的企业架构转型规划。项目组联合行方协同创新&#xff0c;首次将企架建模方法应用于…