二叉树遍历

今天讲的不是  leetcode 上的题,但也和二叉树有关,一道比较有意思的题

牛客网上的题,如果看懂了,也可以来试着做一下:

二叉树遍历_牛客题霸_牛客网 (nowcoder.com)


题目

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

输入描述:

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

 文字 和 画图 分析

和之前的题不一样的一点,这道题难在如何构建二叉树

这里我们可以利用二叉树前序遍历的同时,将二叉树的左子树和右子树连接起来

以题例举例:

搭建过程:

需要注意的一点是,二叉树的搭建结束,最后连的一根线一定的空树,当前序走完后,其实这个字符串的字符已经全部拿完了,我们可以不需要通过字符是否到  '\0' ,来判断是否已经搭建好

已经连接好各个节点后,利用树再去中序遍历就很简单了


 代码

#include <stdio.h>
#include<stdlib.h>
typedef char TLtype;
typedef struct treelist
{TLtype val;struct treelist* left;struct treelist* right;
}TL;
TL* creatnode(char x)
{TL* newnode = (TL*)malloc(sizeof(TL));newnode->val = x;return newnode;
}
TL* sertree(int *pi,char *pa)
{if(pa[*pi] == '#'){(*pi)++;return NULL;}TL* root = creatnode(pa[(*pi)++]);root->left = sertree(pi,pa);root->right = sertree(pi,pa);return root;return root;
}
void  Inorder(TL *root)
{if(root == NULL){return;}Inorder(root->left);printf("%c ",root->val);Inorder(root->right);
}
int main()
{TL *plist = NULL;char ch[100];scanf("%s",ch);int i = 0;plist = sertree(&i,ch);Inorder(plist);return 0;
}

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

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

相关文章

无mac在线申请hbuilderx打包ios证书的方法

hbuilderx是一个跨平台的开发工具&#xff0c;可以开发android和ios的app应用。打包hbuilderx应用需要hbuilderx打包证书。但是很多使用hbuilderx开发的程序员&#xff0c;并没有mac电脑&#xff0c;而申请ios的证书&#xff0c;hbuilderx官网的教程却是需要mac电脑的&#xff…

C语言—每日选择题—Day49

第一题 3. 假定有语句“ int b[10], *pb; ”&#xff0c;则不正确的赋值为 &#xff08; &#xff09; A&#xff1a;pbb B&#xff1a;pbb[5] C&#xff1a;pbb2 D&#xff1a;pb&b[0] 答案及解析 B 本题考查的是指针类型对数组的引用&#xff1b; A&#xff1a;b是数组名…

Win11如何找到电脑中的NVIDIA控制面板

目录 桌面任意地方右击&#xff0c;选择

SpringBoot里面的web与webflux尽量不在一个模块里面使用

可以参看&#xff1a; java - Dont spring-boot-starter-web and spring-boot-starter-webflux work together? - Stack Overflow The bean requestMappingHandlerMapping, defined in class path resource [org/springframework/web/servlet/config/annotation/DelegatingWe…

统一大语言模型和知识图谱:如何解决医学大模型-问诊不充分、检查不准确、诊断不完整、治疗方案不全面?

统一大语言模型和知识图谱&#xff1a;如何解决医学大模型问诊不充分、检查不准确、诊断不完整、治疗方案不全面&#xff1f; 医学大模型问题如何使用知识图谱加强和补足专业能力&#xff1f;大模型结构大模型嵌入知识图谱的方法 医学大模型问题 问诊。偏离主诉和没抓住核心。…

第1章:企业级研发测试流程

通过实际&#xff08;自研互联网&#xff09;企业的研发流程一览图。 我们发现分为9个阶段&#xff0c;当然每个公司细节并不一样。 所以我希望你能理解这句话&#xff1a; 一切的流程、行为、结果都是围绕“产品质量”这4个字开展活动。而作为测试&#xff0c;你该考虑的是如何…

克隆虚拟环境

conda虚拟环境 克隆clone 在服务器上想要使用别人搭好的环境&#xff0c;但是又怕自己对环境的修改更新会影响他人的使用&#xff0c;这个时候可以使用conda命令进行复制环境。 首先假设已经安装了Anaconda。 根据已有环境名复制生成新的环境 1、假设已有环境名为A&#xff0c…

JWT实现websocket的token登录拦截认证

关于websocket的请求必须登录&#xff0c;实现websocket需要登录后才可使用&#xff0c;不登录不能建立连接。 后台spring security配置添加websocket的请求可以匿名访问&#xff0c;关于websocket的请求不要认证就可以随意访问&#xff0c;去除匿名访问后&#xff0c;前端在与…

【教学类-05-02】20231216 (比大小> <=)X-Y之间的比大小88题(补全88格子,有空格分割提示)

作品展示&#xff1a; 背景需求&#xff1a; 1、以前做过一份比大小的题目 【教学类-05-01】20211018 Python VSC 大班 数字比大小&#xff08;&#xff1e; &#xff1c;&#xff09;_vsc比较3位数大小-CSDN博客文章浏览阅读674次。【教学类-05-01】20211018 Python VSC 大班…

MILP加速运算技巧——模型预处理presolve【草稿】

文章目录 预处理是许多MIP求解器在正是求解前会进行的一个步骤&#xff0c;能通过一些简单策略的较低开销&#xff0c;节省最终模型整体求解中不必要的计算&#xff0c;提高求解效率。 这些简单策略包括消除模型中冗余的约束、提升模型的紧凑性&#xff08;tighten formulatio…

如何使用MySQL Workbench将样本数据库导入到MySQL数据库服务器

如何使用MySQL Workbench将样本数据库导入到MySQL数据库服务器 摘要&#xff1a;在本教程中&#xff0c;您将学习如何使用MySQL Workbench将MySQL样本数据库加载到MySQL数据库服务器。之后&#xff0c;您将有classicmodels示例数据库以方便练习和学习MySQL。 步骤1. 下载class…

学习C语言——体会计算机中的0和1

/* 把hello隐写入一个整型数组,这个小程序可以考察是否清楚数据在内存中存储的具体细节。 具体的说&#xff0c;int类型在小端机器上的存储方式是高位在高地址&#xff0c;低位在低地址&#xff0c;从视觉习惯上和我们的日常书写习惯相反&#xff1b; char类型占用…

centos8stream 升级 sqlite3 ,解决 SQLite 3.27 or later is required (found 3.26.0).

服务器环境是centos8stream, 默认的sqlite是 3.26 &#xff0c;因此&#xff0c;需要升级。 sqlite官网&#xff1a;SQLite Download Page 1.从官网下载最新源码包 cd /opt/ wget https://www.sqlite.org/2023/sqlite-autoconf-3440200.tar.gz tar xvf sqlite-autoconf-344020…

TC397 EB MCAL开发从0开始系列 之 [11.3] SPI配置实战 - 使用SPI Async异步EB配置W25Q32

一、SPI配置1、配置目标2、目标依赖2.1 硬件使用2.2 软件使用2.3 新增模块3、EB配置3.1 配置讲解3.2 模块配置3.2.1 MCU配置3.2.2 PORT配置3.2.3 SPI配置3.2.3.1 General配置3.2.3.2 SpiMaxChannel/Job/Sequence配置3.2.3.3 Spi

Linux的权限(二)

目录 前言 文件类型和访问权限&#xff08;事物属性&#xff09; 补充知识 文件类型 文件操作权限 修改文件权限 chmod指令 文件权限值的表示方法 字符表示方法 8进制数值表示方法 权限有无带来的影响 修改文件角色 chown与chgrp指令 目录的rwx权限 补充知识 …

基于net6的zmq调试工具

0.前言 最近在做CS架构的上位机控制软件&#xff0c;服务端和客户端是通过zmq进行通讯的&#xff0c;网上现有的工具都是tcp、串口的调试工具&#xff0c;一直没有找到一个合适的zmq调试工具。就使用C#语言开发了这个简易的zmq调试工具&#xff0c;项目地址ZmqDebuggerTool。 …

小程序禁止滚动穿透,page-meta

使用场景&#xff1a;页面中有弹窗&#xff0c;并且弹窗里数据超过弹窗的高&#xff0c;要在弹窗做滑动操作&#xff0c;当弹窗滑动到底部的时候&#xff0c;继续划动会导致底层页面的滚动&#xff0c;这就是滚动穿透。这种情况对于体验感很不友好。 解决办法&#xff1a;使用p…

机器学习scikit-learn实现

机器学习scikit-learn实现 scikit-learn简介scikit-learn API机器学习基础机器学习算法机器学习工作流程监督学习无监督学习数据集 (Dataset)特征 (Features)标签 (Labels)模型 (Model)训练 (Training)验证 (Validation)测试 (Testing)损失函数 (Loss Function)优化算法 (Opti…

day03-报表技术POIEasyPOI

1、了解百万数据的导入 1.1 需求分析 使用POI基于事件模式解析案例提供的Excel文件 1.2 思路分析 **用户模式&#xff1a;**加载并读取Excel时&#xff0c;是通过一次性的将所有数据加载到内存中再去解析每个单元格内容。当Excel数据量较大时&#xff0c;由于不同的运行环境…

ArrayList与LinkLIst

ArrayList 在Java中&#xff0c;ArrayList是java.util包中的一个类&#xff0c;它实现了List接口&#xff0c;是一个动态数组&#xff0c;可以根据需要自动增长或缩小。下面是ArrayList的一些基本特性以及其底层原理的简要讲解&#xff1a; ArrayList基本特性&#xff1a; 动…