当前位置: 首页 > news >正文

【算法】二叉树的存储与遍历模板

二叉树的存储与遍历

const int N = 1e6 + 10;// 二叉树的存储,l数组为左节点,r数组为右结点
int l[N], r[N];
// 存储节点的数据
char w[N];
// 节点的下标指针
int idx = 0;// 先序创建
int pre_create(int n) {cin >> w[n];if (w[n] == '#') return -1;l[n] = pre_create(++idx);r[n] = pre_create(++idx);return n;
}// 中序创建
int in_create(int n) {if (w[n] == '#') return -1;l[n] = in_create(++idx);cin >> w[n];r[n] = in_create(++idx);return n;
}// 后序创建
int back_create(int n) {if (w[n] == '#') return -1;l[n] = back_create(++idx);r[n] = back_create(++idx);cin >> w[n];return n;
}// 先序遍历
void pre_print(int n){if (w[n] != '#') cout << w[n] << ' ';if (l[n] > 0) pre_print(l[n]);if (r[n] > 0) pre_print(r[n]);
}// 中序遍历
void in_print(int n){if (l[n] > 0) in_print(l[n]);if (w[n] != '#') cout << w[n] << ' ';if (r[n] > 0) in_print(r[n]);
}// 后序遍历
void back_print(int n){if (l[n] > 0) back_print(l[n]);if (r[n] > 0) back_print(r[n]);if (w[n] != '#') cout << w[n] << ' ';
}// 层序遍历
void bfs(int root){queue<int> que;que.push(root);while (!que.empty()) {int t = que.front();cout << w[t] << ' ';que.pop();if (l[t] > 0 && w[l[t]] != '#')que.push(l[t]);if (r[t] > 0 && w[r[t]] != '#')que.push(r[t]);}
}

应用

int main(){// 先序创建pre_create(++idx);// 中序创建// in_create(++idx);// 后序创建// back_create(++idx);// 先序遍历pre_print(1);// 中序遍历in_print(1);// 后序遍历back_print(1);// 层序遍历bfs(1);// 测试数据abc##de#g##f###// 输出如下:// a b c d e g f // c b e g d f a // c g e f d b a // a b c d e f g return 0;
}

存起来,一起用

相关文章:

【算法】二叉树的存储与遍历模板

二叉树的存储与遍历 const int N 1e6 10;// 二叉树的存储,l数组为左节点,r数组为右结点 int l[N], r[N]; // 存储节点的数据 char w[N]; // 节点的下标指针 int idx 0;// 先序创建 int pre_create(int n) {cin >> w[n];if (w[n] #) return -1;l[n] pre_create(idx)…...

【Go学习之 go mod】gomod小白入门,在github上发布自己的项目(项目初始化、项目发布、项目版本升级等)

参考 Go语言基础之包 | 李文周的博客Go mod的使用、发布、升级 | weiGo Module如何发布v2及以上版本1.2.7. go mod命令 — 新溪-gordon V1.7.9 文档golang go 包管理工具 go mod的详细介绍-腾讯云开发者社区-腾讯云Go Mod 常见错误的原因 | walker的博客 项目案例 oceanweav…...

79基于matlab的大米粒中杂质识别

基于matlab的大米粒中杂质识别&#xff0c;数据可更换自己的&#xff0c;程序已调通&#xff0c;可直接运行。 79matlab图像处理杂质识别 (xiaohongshu.com)...

Vue 项目实战——如何在页面中展示 PDF 文件以及 PDFObject 插件实战

文章目录 &#x1f4cb;前言&#x1f3af;使用 HTML 标签&#x1f9e9; embed 标签&#x1f9e9; object标签&#x1f9e9; iframe标签&#x1f9e9;完整代码 &#x1f3af;使用 PDFObject 插件&#x1f9e9;为什么使用 PDFObject 插件&#xff08;AI翻译&#xff09;&#x1f…...

系列六、ThreadLocal内存泄露案例

一、ThreadLocal内存泄露案例 /*** Author : 一叶浮萍归大海* Date: 2023/11/22 10:56* Description: 写一段代码导致内存泄露* VM Options&#xff1a;-Xms20m -Xmx20m -Xmn10m -XX:PrintGCDetails* 说明&#xff1a;内存泄露最终会导致内存溢出*/ public class ThreadLocalO…...

Java学习笔记44——Stream流

Stream流 体验Stream流Stream流的生成方式ColLection体系的集合可以使用默认方法stream ()生成流Map体系的集合间接的生成流数组可以通过stream接口的静态方法of (T... values)生成流 Stream流的中间操作方法Stream<T> filter(Predicate predicate)Stream<T>limit(…...

excel表格忘记密码,如何找回?

找回和去除Excel表格密码的方法非常简单。具体步骤如下&#xff1a;第一步百度搜索【 密码帝官网 】&#xff0c;第二步点击“立即开始”在用户中心上传文件即可。这个方法既安全又简单&#xff0c;不需要下载任何软件&#xff0c;而且可以在手机和电脑上都使用。密码帝官网支持…...

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Mybatis初识和框架搭建

第一章 初识Mybatis 1.1 框架概述 生活中“框架” 买房子笔记本电脑 程序中框架【代码半成品】 Mybatis框架&#xff1a;持久化层框架【dao层】SpringMVC框架&#xff1a;控制层框架【Servlet层】Spring框架&#xff1a;全能… 1.2 Mybatis简介 Mybatis是一个半自动化持久化…...

差分放大器工作原理(差分放大器和功率放大器区别)

差分放大器是一种特殊的放大器&#xff0c;它可以将两个输入信号的差异放大输出。其工作原理基于差分放大器的电路结构和差分输入特性。 一、差分放大器电路结构 差分放大器一般由四个基本电路组成&#xff1a;正反馈网络、反相输入端、共模抑制电路和差分输入端。其中&#xf…...

SystemV

a...

LiteOS同步实验(实现生产者-消费者问题)

效果如下图&#xff1a; 给大家解释一下上述效果&#xff1a;在左侧&#xff08;顶格&#xff09;的是生产者&#xff08;Producer&#xff09;&#xff1b;在右侧&#xff08;空格&#xff09;的是消费者&#xff08;Consumer&#xff09;。生产者有1个&#xff0c;代号为“0”…...

redis的性能管理和雪崩

redis的性能管理 redis的数据是缓存在内存当中的 系统巡检&#xff1a; 硬件巡检、数据库、nginx、redis、docker、k8s 运维人员必须要关注的redis指标 在日常巡检中需要经常查看这些指标使用情况 info memory #查看redis使用内存的指标 used_memory:11285512 #数据占用的…...

python:关于函数内 * 和 / 是什么意思?

总结&#xff1a;如果你希望调用者使用函数时一定不能使用关键字传参&#xff0c;要求它使用位置进行传参&#xff0c;那么就可以把这些参数放在 / 的前面即可&#xff1b;如果你希望调用者使用函数时一定要使用某些参数&#xff0c;且必须是关键字传参时&#xff0c;那么就可以…...

PPT密码解密,简单教程,保护幻灯片内容

在创建、编辑和共享幻灯片时&#xff0c;有时会解除密码来保护幻灯片的安全。如果因为忘记密码而无法编辑或打开幻灯片&#xff0c;下面是一种安全、简单、实惠的办法来解决这个问题。 具体步骤如下&#xff1a;第一步百度搜索【密码帝官网】&#xff0c;第二步点击“立即开始”…...

Apache Airflow (十一) :HiveOperator及调度HQL

&#x1f3e1; 个人主页&#xff1a;IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;加入大数据技术讨论群聊&#xff0c;获取更多大数据资料。 &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你大数据的个人空间-豹…...

SpringBoot-Docker容器化部署发布

在生产环境都是怎么部署 Spring Boot? 打成 jar 直接一键运行打成 war 扔到 Tomcat 容器中运行容器化部署 一、准备Docker 在 CentOS7 上安装好 Docker 修改 Docker 配置&#xff0c;开启允许远程访问 Docker 的功能&#xff0c;开启方式很简单&#xff0c;修改 /usr/lib/s…...

重生奇迹mu格斗怎么加点

1.力量加点 力量是格斗家的主要属性之一&#xff0c;它可以增加你的攻击力和物理伤害。因此&#xff0c;对于格斗家来说&#xff0c;力量加点是非常重要的。建议在前期将大部分的加点放在力量上&#xff0c;这样可以让你更快地杀死怪物&#xff0c;提高升级速度。 2.敏捷加点…...

「浙江科聪新品发布」新品发布潜伏顶升式移动机器人专用控制器

聚焦专用车型 最小专用控制器 控制器只占整机5%&#xff0c;纵向出线方式&#xff0c;占比更小 更易插拔 整体解决方案 更具价格优势 提供整体解决方案&#xff0c;配套各类型产品设备及车体厂家 打造持久稳定使用 坚持工业级品质 采用车规级接口&#xff0c;不用其它类不可…...

大数据学习(22)-spark

&&大数据学习&& &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 承认自己的无知&#xff0c;乃是开启智慧的大门 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一下博主哦&#x1f91…...

String类常用方法总结

目录 一.简单认识String 二.String对象的比较 1.equals 内部实现原理&#xff1a; 2.compareTo 3.compareToIgnoreCase 三.字符串查找 示例&#xff1a; 四.字符串与其他类型转化 1.数值和字符串相互转换 2.大小写相互转化 3.字符串转数组 4.格式化转化 五.字符串…...

AI助手数据损坏救援指南:ReClaw工具的原理与实战

1. 项目概述&#xff1a;当AI助手“脑死亡”时&#xff0c;你需要一个独立救援队如果你正在运行一个像OpenClaw这样的本地AI助手工作空间&#xff0c;那么你很可能已经体验过那种令人抓狂的时刻&#xff1a;助手突然“失忆”&#xff0c;无法启动&#xff0c;或者开始胡言乱语。…...

应对2026海外新规:留学生英文论文降AI避坑指南(附4款实测工具)

不知道各位小伙伴发现没有&#xff0c;处理英文文章这件事要比处理中文难很多。之前我自己的英文摘要写好后满心欢喜去跑检测&#xff0c;结果你猜怎么着&#xff1f;手打的摘要部分AI率居然高达85%......我折腾了两三天时间&#xff0c;查了各种资料&#xff0c;这才算真正搞懂…...

从实验室到机房:用神州数码设备搭建企业级网络的全流程实战(VLAN/路由/安全)

从实验室到机房&#xff1a;用神州数码设备搭建企业级网络的全流程实战 当一家50人规模的中型企业从共享办公空间搬入独立写字楼时&#xff0c;网络架构师小李面临的第一个挑战是&#xff1a;如何用有限的预算搭建一个具备部门隔离、安全管控和远程管理能力的企业网络。与实验室…...

高斯泼溅技术在3D场景理解与深度估计中的应用

1. 技术背景与核心价值 在计算机视觉领域&#xff0c;3D场景理解一直是个关键挑战。传统深度估计方法往往受限于稀疏输入或低分辨率数据&#xff0c;导致重建结果细节丢失严重。最近我在一个AR导航项目中就遇到了这个问题——手机摄像头采集的深度图分辨率不足&#xff0c;直接…...

探索Acode:如何在Android设备上打造完整的移动开发环境

探索Acode&#xff1a;如何在Android设备上打造完整的移动开发环境 【免费下载链接】Acode Acode - powerful text/code editor for android 项目地址: https://gitcode.com/gh_mirrors/ac/Acode Acode移动代码编辑器、Android开发工具、移动编程环境 - 你是否曾经想过&…...

别再只调库了!深入理解STM32 RTC时钟源选择(LSE/LSI/HSE)与低功耗设计要点

深入解析STM32 RTC时钟源选择与低功耗设计实战 在嵌入式系统开发中&#xff0c;实时时钟(RTC)模块的重要性常常被低估。很多开发者满足于在CubeMX中勾选几个配置选项就认为任务完成&#xff0c;却忽略了时钟源选择对系统稳定性、精度和功耗的关键影响。本文将带您深入STM32的RT…...

如何3分钟搭建免费H5页面编辑器:零代码制作专业移动端页面

如何3分钟搭建免费H5页面编辑器&#xff1a;零代码制作专业移动端页面 【免费下载链接】h5maker h5编辑器类似maka、易企秀 账号/密码&#xff1a;admin 项目地址: https://gitcode.com/gh_mirrors/h5/h5maker 还在为制作精美的H5页面而发愁吗&#xff1f;想要像专业设计…...

【完整源码+数据集+部署教程】医学影像感染区域分割系统源码&数据集分享 [yolov8-seg-RevCol&yolov8-seg-C2f-EMSCP等50+全套改进创新点发刊_一键训练教程_Web

背景意义 随着医学影像技术的快速发展&#xff0c;医学影像在疾病诊断、治疗和预后评估中扮演着越来越重要的角色。尤其是在感染性疾病的诊断中&#xff0c;医学影像不仅能够提供直观的病灶信息&#xff0c;还能辅助医生进行精准的临床决策。然而&#xff0c;传统的医学影像分…...

本地大语言模型部署指南:从硬件选型到实战调优

1. 本地大语言模型&#xff08;LLM&#xff09;入门&#xff1a;为什么选择在消费级硬件上运行&#xff1f;如果你对ChatGPT、Claude这类云端AI助手已经非常熟悉&#xff0c;但偶尔会受限于它们的网络要求、使用成本&#xff0c;或者对数据隐私有所顾虑&#xff0c;那么“本地大…...

告别‘变砖’恐慌:详解STM32 IAP升级中BootLoader+Setting+App+Download分区方案的实战配置

STM32 IAP升级防变砖全攻略&#xff1a;BootLoaderSettingAppDownload分区架构深度解析 当你的STM32设备在凌晨3点的工厂里突然变砖&#xff0c;而客户的生产线因此停摆——这种噩梦般的场景&#xff0c;正是我们今天要彻底解决的痛点。不同于市面上泛泛而谈的BootLoader教程&a…...