二叉树遍历(前序创建|中序遍历)

牛客题目链接

目录

1.解题思路

1.1中序遍历打印

​1.2前序创建二叉树

1.3注意点

博主这里用的是java实现

随手记一个知识:

hasNext读取到空格或者换行符会结束

hasNextLine读取到换行符才会结束(空格不会退出)

为什么要强调这个呢?

因为这道题,让我们输入一个字符串,而这个字符串内是包含空格的 ,如果使用hasNext,读取的字符串信息是不正确的。

1.解题思路

定义两个方法,一个用于创建树(前序),另一个用于遍历打印这颗树(中序

1.1中序遍历打印

没啥好说的,先左,在根,然后右。

1.2前序创建二叉树

分析:

给定已被读取的字符串,依据字符串的元素(前序遍历),创建二叉树。

整体思路:

判断当前字符是否为空,为空,当前的root返回空,不为空,当前的root创建一个节点,赋值当前的字符,然后i++,左子树递归调用当前方法,然后右子树递归调用当前方法。

下面代码中的变量i,是int类型,Main方法的实例成员变量。(初始值==0)

1.3注意点

大家觉得,代码中没有下标  i  进行限制,它会越界吗?


答案当然是不会啦。

为啥?

很简单,我们都知道,递归方法(函数)都有这样一个性质,就是在递归到某个深度时,所有的递归方法就会按照出栈顺序,返回。

当str中的最后一个字符‘#’,被识别,那么将不会在创建新的createTree方法,而是返回之前所有的方法,i自然而然的就不会越界了。

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

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

相关文章

Vivado Design Suite中的增量实现和增量模式

Vivado Incremental(增量)是Xilinx FPGA设计工具中的一种功能,它允许对设计的一部分进行修改和重新编译,而不需要对整个设计进行重新编译。这种增量式的方法可以显著减少编译时间,特别是在进行小的修改或迭代开发时。 …

std::stringstream

std::stringstream 是 C 标准库中的一个类,用于对字符串进行输入输出操作,类似于文件流(std::ifstream 和 std::ofstream)。它允许你像使用 std::cin 和 std::cout 一样使用字符串。 std::stringstream 可以将字符串作为输入源&am…

ThreadPoolExecutor线程池解析

ThreadPoolExecutor线程池解析 一、ThreadPoolExecutor常见参数 jdk中Executors提供了几种常用的线程池,底层都是ThreadPoolExecutor。 public ThreadPoolExecutor(int corePoolSize,//核心线程数int maximumPoolSize,// 最大线程数long keepAliveTime,//非核心线程…

大数据产品有哪些分类?各类里知名大数据产品都有哪些?

随着互联网技术的持续进步和全球数字化转型的推进,我们正处于一个数据爆炸的时代。在这样的大背景下,大数据已经逐渐崭露头角,成为了推动各行各业发展的关键因素和核心资源。大数据不仅仅是指数据的规模巨大,更重要的是它蕴含的价…

量子信息产业生态研究(一):关于《量子技术公司营销指南(2023)》的讨论

写在前面。量子行业媒体量子内参(Quantum Insider)编制的《量子技术公司营销指南》是一本实用的英文手册,它旨在帮助量子科技公司建立有效的营销策略,同时了解如何将自己定位成各自的行业专家。本文对这篇指南的主要内容进行了翻译…

ubuntu上安装截图工具-Flameshot及其使用步骤说明

Flameshot 火焰截图-推荐 安装命令: sudo apt install flameshot 操作方式: 1)打开 2)右上角弹窗 3)点击后弹出 选择进行截图 4)截图后再选择分享 5)再重新选择区域,出现编辑…

【蓝桥杯】2024年第15届真题题目

试题 A: 握手问题 本题总分: 5 分 【问题描述】 小蓝组织了一场算法交流会议,总共有 50 人参加了本次会议。在会议上, 大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进 行一次握手(且仅有一次&a…

CMD 汉字乱码处理

windows 11 cmd汉字乱码问题处理 一 查看CMD编码 win R 输入 cmd 输入 chcp 查看回显信息 “936”代表的意思就是 GBK (汉字内码扩展规范),通常情况下GBK也是cmd的默认编码。 解决乱码需要把编码改为 utf-8 二 临时修改 在 终端中输入 chcp 65001 三 永久修改…

蓝桥杯嵌入式第十五届省赛真题题目

蓝桥杯昨天也考完了,大家可以看看题目 客观题题目 程序题题目

【Python函数和类4/6】递归与匿名函数

目录 目标 匿名函数 多个形参 匿名函数的局限性 递归 语言例子 数学例子 递归的实现 递归代码 练习 总结 目标 在之前的博客中,我们学习了定义函数、调用函数以及设置函数的参数。在今天,我们会补充函数的两个常见的知识点,一个是匿…

学浪视频怎么缓存?

缓存学浪视频轻而易举!推荐使用“小浪助手”,一款便捷的工具,助你轻松实现。工具已经预先打包好,需要的朋友可以自行下载。快试试,畅享学习吧! 学浪下载器链接:https://pan.baidu.com/s/1y7vcq…

spring容器

spring容器 实现方式 spring中提供了各式各样的IOC容器的实现供用户选择和使用,使用什么样的容器取决于用户的需要 BeanFactory 该接口是最简单的容器,提供了基本的DI支持。最常用的BeanFactory实现是XmlBeanFactory类,根据XML文件中的定义加…

RetinalNet论文笔记

RetinalNet 概述1. 引言2. 相关工作3. 焦点损失4. RetinaNet Detector 检测器5. 实验6. 结论 3. Focal loss3.1. 平衡交叉熵3.2. 焦点损失定义3.3. 类别不平衡和模型初始化3.4. 类别不平衡和两阶段检测器 4. RetinaNet Detector特征金字塔网络骨干(Feature Pyramid …

PostgreSQL入门到实战-第二十五弹

PostgreSQL入门到实战 PostgreSQL中表连接操作(九)官网地址PostgreSQL概述PostgreSQL中NATURAL JOIN命令理论PostgreSQL中NATURAL JOIN命令实战更新计划 PostgreSQL中表连接操作(九) 使用PostgreSQL NATURAL JOIN从两个表中查询数据。 官网地址 声明: 由于操作系统, 版本更新…

C++实现AVL树

文章目录 一、平衡树的优势二、二叉平衡搜索树的节点定义三、二叉搜索树的插入3.1 寻找插入位置3.2 开始判定平衡因子,平衡因子有变就开始旋转3.2.1 左旋的情况3.2.2 左旋代码(一定要考虑平衡因子为2或者-2的节点是否有父节点)3.2.2 右旋的情…

DC-5渗透测试复现

DC-5渗透测试复现 目的: 获取最高权限以及5个flag 过程: 信息打点-文件包含漏洞-弹shell- scren-4.0.5提权 环境: 攻击机:kali(192.168.85.136) 靶机:DC_3(192.168.85.134) 复现: 一.信息收集 nma…

PlantUML 实战示例(使用 PlantUML 画用例图、类图、活动图、时序图)

目录 前言 需求场景 用例图 类图 活动图 时序图 前言 在软件开发的生命周期中,需要先进行设计,最后才是进行具体的编码和测试。设计时就需要画各种 UML 图,有专业的 UML 画图软件,也有很多在线的 UML 画图网站可以来画图&a…

Dubbo面试回答简单版

一、dubbo特性 超时重试机制地址缓存多版本负载均衡:随机、权重轮询、最少活跃调用、一致性哈希集群容错:失败重试、快速失败、失败安全、失败自动恢复、并行调用、广播服务降级:异常时返回mock 集群容错 FailOver 失败重试,读…

求存款本息和(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> # include <math.h>int main() {//初始化变量值&#xff1b;double P 1000, r1 0.015, r2 0.021, r3 0.0275, r4 0.03, r5 0.0035;int judge 0;//…

富文本编辑器的下载安装使用

为什么选择vue-quill-editor&#xff1f; 在众多的富文本编辑器中&#xff0c;vue-quill-editor因其易用性、灵活性以及对Vue框架友好的特性而受到开发者的青睐。它基于Quill编辑器&#xff0c;Quill是一款现代的WYSIWYG&#xff08;所见即所得&#xff09;编辑器&#xff0c;…