数据结构(5.3_1)——二叉树的先中后序遍历

先序遍历——左右——前缀表达式

中序遍历——左右——中缀表达式

后序遍历——左右——后缀表达式

二叉树的遍历(手算)

先序遍历代码

 

 

struct ElemType
{int value;
};
//二叉树的结点(链式存储)
typedef struct BiTNode {ElemType data;//数据域struct BiTNode *lchild, * rchild;//左、右孩子指针
}BiTNode,*BiTree;
void visit(BiTree T) {if (T != NULL) { // 确保结点非空printf("%d ", T->data.value); // 打印结点的value}
}
//先序遍历
void PreOrder(BiTree T) {if (T != NULL) {visit(T);//访问根结点PreOrder(T->lchild);//递归遍历左子树PreOrder(T->rchild);//递归遍历右子树}
}

中序遍历代码

struct ElemType
{int value;
};
//二叉树的结点(链式存储)
typedef struct BiTNode {ElemType data;//数据域struct BiTNode *lchild, * rchild;//左、右孩子指针
}BiTNode,*BiTree;
void visit(BiTree T) {if (T != NULL) { // 确保结点非空printf("%d ", T->data.value); // 打印结点的value}
}
//先序遍历
void PreOrder(BiTree T) {if (T != NULL) {PreOrder(T->lchild);//递归遍历左子树visit(T);//访问根结点PreOrder(T->rchild);//递归遍历右子树}
}

后序遍历代码

struct ElemType
{int value;
};
//二叉树的结点(链式存储)
typedef struct BiTNode {ElemType data;//数据域struct BiTNode *lchild, * rchild;//左、右孩子指针
}BiTNode,*BiTree;
void visit(BiTree T) {if (T != NULL) { // 确保结点非空printf("%d ", T->data.value); // 打印结点的value}
}
//先序遍历
void PreOrder(BiTree T) {if (T != NULL) {PreOrder(T->lchild);//递归遍历左子树PreOrder(T->rchild);//递归遍历右子树visit(T);//访问根结点}
}

总结:

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

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

相关文章

解决kkfileview 使用https预览问题记录

场景:项目使用了开源的kkfileview进行文件在线预览,部署方式使用的是docker,使用IP进行访问,但是http协议直接访问有漏洞告警,现在需要调整为https,且仍然需要使用IP访问。 kkfileview官网kkFileView - 在线…

白骑士的PyCharm教学基础篇 1.2 PyCharm基本操作

系列目录 上一篇:白骑士的PyCharm教学基础篇 1.1 PyCharm简介 创建与打开项目 创建项目 创建项目是使用 PyCharm 开发的第一步。以下是创建新项目的详细步骤: 启动 PyCharm: 打开 PyCharm 后,你会进入欢迎界面。在这里&#x…

AI学习记录 - 规范化输出对接现有系统的实例

假设我们有一个学生管理系统,通过prompt提示,格式化输出然后对接现有系统,也是通过react实现,因为这只是一个知识分享,没弄太复杂(使用react实现)。 学生管理系统 1、设计好prompt getMemory()…

mybatis批量插入、mybatis-plus批量插入、mybatis实现insertList、mybatis自定义实现批量插入

文章目录 一、mybatis新增批量插入1.1、引入依赖1.2、自定义通用批量插入Mapper1.3、把通用方法注册到mybatisplus注入器中1.4、实现InsertList类1.5、需要批量插入的dao层继承批量插入Mapper 二、可能遇到的问题2.1、Invalid bound statement 众所周知,mybatisplus…

编程界的“四大天王”

C语言、‌C、‌Java和Python是四种重要的编程语言,‌各有其独特的优点和适用场景。‌ 系统编程和底层开发:‌C语言是系统编程和底层开发的首选语言,‌而C也适用于系统编程,‌并且在高性能场合中更受青睐,‌因为它支持面…

Python对某音乐论坛进行简单的采集

今天简单的用Python来采集一下某论坛的歌曲 环境使用 Python 3.10 Pycharm 模块使用 requests --> 发送请求 pip install requests execjs --> pip install execjs re 正则源码和视频讲解都打包好了,文末名片自取 基本流程 一、数据来源分析 1.明…

代码随想录算法训练营第47天

LeetCode 647. 回文子串 链接 class Solution { public:int countSubstrings(string s) {int res 0;for(int i 0; i < s.size(); i) {res extend(s, i, i, s.size());res extend(s, i, i 1, s.size());}return res;}int extend(const string& s, int i, int j, i…

手写RPC-令牌桶限流算法实现,以及常见限流算法

为什么需要服务限流、降级 分布式架构下&#xff0c;不同服务之间频繁调用&#xff0c;对于某个具体的服务而言&#xff0c;可能会面临高并发场景。在这样的情况下&#xff0c;提供服务的每个服务节点就都可能由于访问量过大而引起一系列问题&#xff0c;比如业务处理耗时过长、…

javac 生成 jar脚本命令

1 指定编译输出目录的选项 ps: java代码全路径 javac -d 是用于指定编译输出目录的选项&#xff0c;如果不执行这句&#xff0c;可能会导致修改了java代码后&#xff0c;再次生成的jar 没生效 javac -d. D:\TestAspect\app\src\main\java\com\ljl\testaspect\ui\Modify.java …

SpringBoot整合Elastic-Job 2.1.53版本任务调度,手动任务,动态添加任务演示

前提&#xff1a;zookeeper安装并成功运行 1 pom依赖 <dependency><groupId>com.github.kuhn-he</groupId><artifactId>elastic-job-lite-spring-boot-starter</artifactId><version>2.1.53</version> </dependency> 2 yml配…

Java异常有哪些

目录 内存溢出异常(OutOfMemoryError) IO异常(IOException) 文件找不到异常(FileNotFoundException) 类找不到异常(ClassNotFoundException) 类转换异常(ClassCastException) 没有这个方法异常(NoSuchMethodException) 索引越界异常(IndexOutOfBoundsException) SQL异常…

后端开发刷题 | 笔试

1.关于C的纯虚函数&#xff0c;下列说法错误的是&#xff08;&#xff09; A 纯虚函数不能实例化对象&#xff0c;拥有纯虚函数的类是抽象类 B 纯虚函数不能做指针和引用 C 纯虚函数声明的最后面“0”并不表示函数返回值为0&#xff0c;它只起形式上的作用 D 虚函数和纯虚函数都…

uniapp 重置表单数据

场景 例如有数据如下 data(){return {queryForm:{value1:undefined,}} } 点击重置时候想重置form的数据&#xff0c; 操作 Object.assign(this.$data.queryForm, this.$options.data().queryForm); 就可以重置数据

FlowUs横向对比几款笔记应用的优势所在

FlowUs作为一个本土化的生产力工具&#xff0c;在中国市场的环境下相对于Notion有其独特的优势&#xff0c;尤其是在稳定性和模板适应性方面。 尽管Notion在笔记和生产力工具领域享有极高的声誉&#xff0c;拥有着诸多创新功能和强大的生态系统&#xff0c;但它并不一定适合每…

VMware三种网络模式---巨细

文章目录 目录 ‘一.网络模式概述 二.桥接模式 二.NAT模式 三.仅主机模式 四.案例演示 防火墙配置&#xff1a; 虚拟电脑配置 前言 本文主要介绍VMware的三种网络模式 ‘一.网络模式概述 VMware中分为三种网络模式&#xff1a; 桥接模式&#xff1a;默认与宿主机VMnet0绑…

基于Java中的SSM框架实现商店积分管理系统项目【项目源码+论文说明】计算机毕业设计

基于Java中的SSM框架实现商店积分管理系统演示 摘要 随着时代的发展&#xff0c;信息化的管理手段已被普遍应用于企业的日常运作中。在当今竞争激烈的市场中&#xff0c;消费者的需求量日益增长&#xff0c;而商品信息的管理也变得越来越复杂&#xff0c;因此&#xff0c;实施…

9. 机器学习汇总(数据、模型、流程、心血管疾病预测)

1. 数据 表格类数据 tabular data互相独立&#xff0c;互不影响离散型数据的数字化&#xff1a; zero index&#xff08;状态很少时&#xff09; 0,1,2,…, N-1 one - hot&#xff08;状态比较多时&#xff09; 1个特征变N个特征[0, 0, 1, …, 0] 连续型数据的数字化问题&…

14. Hibernate 一对多双向关联映射

1. 前言 本节课程和大家一起聊聊一对多关联映射。通过本节课程&#xff0c;你将了解到&#xff1a; 如何实现一对多关联映射&#xff1b; 如何实现双向一对多关联映射&#xff1b; 关联映射中的级联操作。 2. 一对多关联映射 关系型数据库中表与表中的数据存在一对多&…

在Ubuntu 18.04上安装和使用Composer的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 介绍 Composer 是一个流行的 PHP 依赖管理工具&#xff0c;主要用于简化项目依赖项的安装和更新。它会检查特定项目依赖的其他软件包&a…

深入理解Linux网络(八):内核如何发送网络包

深入理解Linux网络&#xff08;八&#xff09;&#xff1a;内核如何发送网络包 一、总览二、网卡启动准备三、ACCEPT 创建新 SOCKET四、开始发送数据send 系统调⽤实现传输层处理传输层拷贝传输层发送 网络层发送原理邻居⼦系统网络设备子系统软中断调度igb网卡驱动发送发送完成…