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

【牛客刷题实战】二叉树遍历

大家好,我是小卡皮巴拉

文章目录

目录

牛客题目: 二叉树遍历

题目描述

输入描述:

输出描述:

示例1

解题思路

问题理解

算法选择

具体思路

解题要点

完整代码(C语言)

兄弟们共勉 !!! 


每篇前言

博客主页:小卡皮巴拉

咱的口号:🌹小比特,大梦想🌹

作者请求:由于博主水平有限,难免会有错误和不准之处,我也非常渴望知道这些错误,恳请大佬们批评斧正。

牛客题目: 二叉树遍历

原题链接:二叉树遍历

题目描述

编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。

输入描述:

输入包括1行字符串,长度不超过100。

输出描述:

可能有多组测试数据,对于每组数据, 输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。 每个输出结果占一行。

示例1

输入:

abc##de#g##f###

复制输出:

c b e g d f a 

解题思路

问题理解

题目要求从用户输入的一串先序遍历字符串中构建一个二叉树,其中“#”字符代表空节点。构建完成后,需要对这棵二叉树进行中序遍历,并输出遍历结果。

算法选择

使用递归的方法来构建二叉树,并在构建过程中利用指针索引来遍历字符串。然后,使用另一个递归函数对中序遍历进行输出。

具体思路

  1. 定义一个二叉树节点的结构体 BinaryTreeNode

  2. 编写一个函数 buyNode 来创建新的二叉树节点。

  3. 编写一个递归函数 creatTree,根据先序遍历字符串和当前处理的字符索引来构建二叉树。

  4. 编写一个递归函数 InOrder,对构建好的二叉树进行中序遍历,并输出结果。

  5. 在主函数中,读取输入字符串,调用 creatTree 函数构建二叉树,然后调用 InOrder 函数输出结果。

解题要点

  • 定义二叉树节点:使用结构体 BinaryTreeNode 定义二叉树节点。

  • 创建节点:使用 buyNode 函数根据字符创建新节点。

  • 构建二叉树:使用 creatTree 函数递归地根据先序遍历字符串和索引构建二叉树。

  • 中序遍历:使用 InOrder 函数递归地对二叉树进行中序遍历,并输出遍历结果。

  • 处理输入:在主函数中读取输入字符串,并调用相关函数进行构建和遍历。

完整代码(C语言)

#include <stdio.h>
#include <stdlib.h>typedef struct BinaryTreeNode
{char data;struct BinaryTreeNode* left;struct BinaryTreeNode* right;
}BTNode;BTNode* buyNode(char ch)
{BTNode* node = (BTNode*)malloc(sizeof(BTNode));node->data = ch;node->left = node->right = NULL;return node;
}
BTNode* creatTree(char* arr,int* pi)
{if(arr[*pi] == '#'){++(*pi);return NULL;}BTNode* root = buyNode(arr[*pi]);++(*pi);root->left = creatTree(arr, pi);root->right = creatTree(arr, pi);return root;
}
void InOrder(BTNode* root)
{if(root == NULL){return;}InOrder(root->left);printf("%c ",root->data);InOrder(root->right);
}
int main() {char arr[100];scanf("%s",arr);//根据数组中的内容创建二叉树int i = 0;BTNode* root = creatTree(arr,&i);InOrder(root);return 0;
}

兄弟们共勉 !!! 

码字不易,求个三连

抱拳了兄弟们!

相关文章:

【牛客刷题实战】二叉树遍历

大家好&#xff0c;我是小卡皮巴拉 文章目录 目录 牛客题目&#xff1a; 二叉树遍历 题目描述 输入描述&#xff1a; 输出描述&#xff1a; 示例1 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码&#xff08;C语言&#xff09; 兄弟们共勉 &#xff01;&…...

消息队列mq有哪些缺点?

大家好&#xff0c;我是锋哥。今天分享关于【消息队列mq有哪些缺点&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; 消息队列mq有哪些缺点&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 消息队列&#xff08;MQ&#xff09;的缺点 消…...

【CENet】多模态情感分析的跨模态增强网络

在MSA领域&#xff0c;文本的准确度远远高于音频和视觉&#xff0c;如果文本能达到90%&#xff0c;那么音频和视觉的准确度只有60%~80%&#xff0c;但是过往研究很少针对情感分析的背景下去提高音频和视频的准确度。 abstract&#xff1a; 多模态情感分析&#xff08;MSA&…...

动态代理:面向接口编程,屏蔽RPC处理过程

RPC远程调用 使用 RPC 时&#xff0c;一般的做法是先找服务提供方要接口&#xff0c;通过 Maven把接口依赖到项目中。在编写业务逻辑的时候&#xff0c;如果要调用提供方的接口&#xff0c;只需要通过依赖注入的方式把接口注入到项目中&#xff0c;然后在代码里面直接调用接口…...

HTTP 405 Method Not Allowed:解析与解决

HTTP 405 Method Not Allowed&#xff1a;解析与解决 引言 在Web开发中&#xff0c;HTTP状态码是服务器与客户端之间通信的重要组成部分。当我们使用Python进行网络请求时&#xff0c;经常会遇到各种HTTP状态码。其中&#xff0c;HTTP 405 “Method Not Allowed” 错误是一个…...

推荐一款CAD/CAM设计辅助工具:Mastercam

Mastercam是一款非常好用的软件&#xff0c;我们的这款软件是由美国CNC软件公司开发&#xff0c;集平面制图、三维设计、曲面设计、数 控编程、刀具处理等多项强大功能于一体。软件的使用过程具有非常直观的特点&#xff0c;用户可以很方便地对自己的作品进行设计。 Mastercam不…...

位运算刷题记录

1. 使两个整数相等的位更改次数 3226. 使两个整数相等的位更改次数 给你两个正整数 n 和 k。 你可以选择 n 的 二进制表示 中任意一个值为 1 的位&#xff0c;并将其改为 0。 返回使得 n 等于 k 所需要的更改次数。如果无法实现&#xff0c;返回 -1。 class Solution {pub…...

爬虫技术——小白入狱案例

知孤云出岫 目录 1. 案例概述2. 案例需求分析3. 实现步骤Step 1: 环境准备Step 2: 分析百度图片URL请求规律Step 3: 编写爬虫代码代码解析 4. 运行代码5. 注意事项6. 案例总结 要实现大批量爬取百度图片&#xff0c;可以使用Python编写一个网络爬虫&#xff0c;通过发送HTTP请求…...

vue 果蔬识别系统百度AI识别vue+springboot java开发、elementui+ echarts+ vant开发

编号&#xff1a;R03-果蔬识别系统 简介&#xff1a;vuespringboot百度AI实现的果蔬识别系统 版本&#xff1a;2025版 视频介绍&#xff1a; vuespringboot百度AI实现的果蔬识别系统前后端java开发&#xff0c;百度识别&#xff0c;带H5移动端&#xff0c;mysql数据库可视化 1 …...

全新更新!Fastreport.NET 2025.1版本发布,提升报告开发体验

在.NET 2025.1版本中&#xff0c;我们带来了巨大的期待功能&#xff0c;进一步简化了报告模板的开发过程。新功能包括通过添加链接报告页面、异步报告准备、HTML段落旋转、代码文本编辑器中的文本搜索、WebReport图像导出等&#xff0c;大幅提升用户体验。 FastReport .NET 是…...

信息学科平台系统设计与实现:Spring Boot技术手册

5系统详细实现 5.1 用户信息管理 基于保密信息学科平台系统的系统管理员可以对用户信息查询。具体界面的展示如图5.1所示。 图5.1 用户信息管理界面 5.2 教师信息管理 管理员可以对教师信息进行查下和删除。具体界面如图5.2所示。 图5.2 教师信息界面 5.3 学科动态管理 管理…...

conda下jupyterlab安装问题以及交互绘图问题记录

安装 1. 直接conda install jupyterlab就好&#xff0c;只要在base环境下安装就行&#xff0c;可以在任意环境下执行jupyter lab启动。 2. 打开jupyter lab后显示Could not determine jupyterlab build status without nodejs&#xff0c;可以执行conda install nodejs安装no…...

尚硅谷react教程_扩展_setState更新状态的2种写法

1.setState setState更新状态的2种写法&#xff08;1&#xff09;.setState(stateChange,[callback])----对象式的setState1.stateChange为状态改变对象&#xff08;该对象可以体现出状态的更改&#xff09;2.callback是可选的回调函数&#xff0c;它在状态更新完毕、界面也更新…...

C语言编写的自动取款机模拟程序

#include〈stdio。h> #include<string。h> #include <stdio.h> #include〈stdlib.h〉 #include〈direct.h〉 #include<io.h> #include 〈errno。h> /********************************************************…...

【常用数据结构】开发中常用的数据结构?

开发中常用的数据结构包括数组、链表、栈、队列、树、图、堆和散列表&#xff08;哈希表&#xff09;‌。这些数据结构在软件开发中有着广泛的应用&#xff0c;并且各自具有独特的特点和用途。 数组 数组是最基本的数据结构之一&#xff0c;用于在内存中连续存储多个元素。数…...

OCC 点云

OCC的基础知识可能还是要系统学习一下&#xff0c;部分导入的模型面类型是很多面都是GeomAbs_BSplineSurface&#xff0c;最终获取参数都要拟合一下&#xff0c;拟合后的生成的面对象没有大小&#xff0c;比如平面只有矢量&#xff08;大小没有思路&#xff09; 圆柱拟合面没有…...

方法重写与方法重载

1. 方法重载与方法重写的定义 方法重写&#xff08;Overriding&#xff09; 方法重写&#xff08;Overriding&#xff09;是指在子类中重新定义与父类中相同的方法。此操作允许子类提供特定的实现&#xff0c;以替代父类的实现。方法重写是实现多态性&#xff08;Polymorphis…...

Vue3实现地球上加载柱体

最终效果为上图。 实现该技术&#xff0c;需要一些技术&#xff0c;我分别罗列一下&#xff1a; canvas&#xff1a;需要使用canvas根据json来绘制地球&#xff0c;不懂的可以看这篇canvas绘制地球 threejs&#xff1a;需要会使用threejs&#xff0c;这里并没有使用shader&am…...

OpenGL入门003——使用Factory设计模式简化渲染流程

前面两节已经学会了如何使用opengl创建窗口并绘制三角形&#xff0c;我们可以看出有些步骤是固定的&#xff0c;而且都写在main.cpp&#xff0c;这一节我们将了解如何使用Factroy设计模型。将模型渲染逻辑封装在一个单独的类中&#xff0c;简化开发流程&#xff0c;且提高代码复…...

01_AI编程案例展示:借助AI轻松爬取海量网盘链接

爬虫案例展示 今天,我们将展示如何利用AI快速开发一个网络爬虫&#xff0c; 使用的工具是Python和Claude 3.5 Sonnet(国内可用豆包替代) 我们的目标是爬取panhub.fun网站上的夸克网盘链接, 即使你是编程新手,也可以轻松完成这样的任务。 案例1-批量爬取panhub网盘整合包 下…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...