清华上机复试题二叉树的遍历

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

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

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

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

示例1
输入:abc##de#g##f###
输出:c b e g d f a

思路:

  1. 根据字符串建立二叉树
  2. 中序遍历

下面两种代码思路一样,第二种简化了一点。

1.C

#include <stdio.h>
#include<stdlib.h>

typedef struct TreeNode {
    struct TreeNode* left;
    struct TreeNode* right;
    char val;

} TNode;

TNode* TreeCreate(char* str, int* i) {//建立二叉树
    if (str[*i] == '#') {//若是‘#’ 说明该节点为空返回上一级节点
        (*i)++;
        return NULL;
    }
    TNode* root = (TNode*)malloc(sizeof(TNode));//若不是则创建节点
    if (root == NULL) {
        printf("malloc fail\n");
        exit(-1);
    }//节点创建成功 赋值
    root->val = str[(*i)++];
    root->left = TreeCreate(str, i);//创建左子树
    root->right = TreeCreate(str, i);//创建右子树
    return root;
}

void InOrder(TNode* root) {//中序遍历
    if (root == NULL) return;//节点为空 返回上一级
    InOrder(root->left);//先遍历左子树
    printf("%c ", root->val);//遍历完左子树后 访问节点
    InOrder(root->right);//再遍历右子树
}

int main() {
    char str[100];
    while(scanf("%s", str)!=EOF){
        int i = 0;
        TNode* root = TreeCreate(str, &i);//建立根节点
        InOrder(root);//中序遍历
    }
    return 0;
}

2.CPP

#include <bits/stdc++.h>
using namespace std;

//定义全局变量 不需要传指针
string str;
int i = 0;

typedef struct TreeNode{
    char val;
    struct TreeNode* left;
    struct TreeNode* right;
    TreeNode(char c):val(c),left(NULL),right(NULL){};
}TNode;

TNode* Create_Tree(){
    if ((str[i]=='#')) {//节点为空 返回上一级节点
        i++;
        return NULL;
    }
    TNode* root = new TNode(str[i++]);//不为空 建立新节点
    root->left = Create_Tree();//创建左子树
    root->right = Create_Tree();//创建右子树
    return  root;
}

void Inorder(TNode* root){//中序遍历
    if ((root == NULL)) {//节点为空 返回上一级
        return; 
    }
    Inorder(root->left);//先遍历左子树
    printf("%c ",root->val);//左子树遍历结束 输出当前节点
    Inorder(root->right);//再遍历右子树
}

int main() {
    while ((cin>>str)) {
        TNode* root = Create_Tree();//创建二叉树
        Inorder(root);//中序遍历
    }
    return  0;
}
清华大学912复试上机考试真题 包括清华大学06年-18年的上机考试试题真题,对于复试上机考试非常有帮助 立即下载

相关推荐

ffmpeg在windows的安装、合并、切片、.m4s、.m3u8处理

自己处理视频,我用的工具是 ffmpeg,因为涉及到.m3u8格式和.m4s格式的一些操作。ffmpeg的介绍我就不多说了,这里是它的官网地址: https://ffmpeg.org/ ,这里是文档: https://ffmpeg.org/documentation.html (看的头大,没咋看下去)...

一只爱吃糖的小羊 2689

二叉树难题破解

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

buhuisuanfa的博客 2万+

微机原理与接口技术第六版周荷琴课后习题答案及解析(期末重点)

第二章 1.8086/8088CPU可直接寻址多少个内存(字节)单元?多少个I/O端口?它们的外部数据总线各有多少根? 8086/8088CPU使用的是20位地址总线,因此可以直接寻址2的20次方个内存单元(即1,048,576),每个单元大小为1字节,因此可以直接寻址2的20次方个字节的内存。 8086/8088CPU有64K个I/O端口,每个端口占用1字节的地址空间,因此可以直接寻址6...

Wmicheng的博客 1万+

清华大学考研上机题,二叉树的遍历细讲,C语言实现

以下是链接哦 链接:二叉树遍历__牛客网 来源:牛客网 题目描述:编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。 分析:首先这是一道io题,给出的字符串是来自于对一个二叉树的先序遍历,然后根据先序遍历所得结果,我们要还原二叉树,然后再用中序遍历来输出结果。 需要注意的是#代表NULL,也就是说树

qq_30677815的博客 1401

Diffusion、VAE与GAN:三大生成模型的原理对比与应用场景解析

本文深入解析了Diffusion、VAE与GAN三大生成模型的核心原理与特性。Diffusion模型通过逆向去噪过程实现高质量图像生成,但计算成本较高;VAE擅长学习概率潜空间,训练稳定但图像偏模糊;GAN通过对抗训练生成锐利图像,但存在模式崩溃风险。文章结合实战场景,为图像生成、修复、超分辨率等任务提供了清晰的模型选择指南。

weixin_29063979的博客 342

Windows防火墙服务异常修复指南:0x80070422与0x6D9报错实战处理

本文针对Windows防火墙服务异常导致的0x80070422与0x6D9报错,提供了从基础到进阶的实战修复指南。核心是通过services.msc服务管理器检查并修复Windows Firewall服务,包括设置启动类型、检查依赖服务等关键步骤。同时介绍了当基础方法失效时,如何使用命令行工具、系统文件检查器(SFC/DISM)以及排查组策略与第三方软件冲突等深度解决方案,帮助用户彻底解决防火墙服务无法启动或访问的问题。

m9n0o的博客 542

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

1.题目描述 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。 输入描述: 输入包括1行字符串,长度不超过100。 输出描述: 可能有多组测试数据,对于每组数据, 输出将输入字符串建立二叉树后中...

qq_41152046的博客 8915

window部署open claw(使用wsl-Ubuntu-docker部署)

本文详细介绍了在Windows 11系统下通过WSL2+Docker部署OpenClaw的完整流程。首先需要满足硬件配置要求并开启虚拟化功能,然后依次完成WSL2安装配置、Docker Desktop安装、OpenClaw镜像拉取等步骤。重点说明了端口映射、socat转发配置及openclaw.json文件修改方法。最后通过验证WSL2内网IP和端口访问服务。该方案具有最佳兼容性,能有效避免Windows环境下的依赖冲突问题。

Kmoyic的博客 2763

[编程题]二叉树遍历

题目来源:链接:二叉树遍历__牛客网 题目描述: 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。 代码: 思路:我们需要对数组进行遍历,并且需要保证下标的变化,所以我们传入i的地址,遍历数组时,遇到#我们跳过,否则就构建树,因为得到的是先序遍历结果,而且得到了空格,所以我们可以直接推出树的结构,遇到两

KLZUQ的博客 618

【智能模型系列】基于Unity和MediaPipe【手部追踪+手势识别】系统开发指南

在本文中,我将详细介绍一个基于MediaPipe的Unity手势识别系统,该系统能够识别多种常见手势(如拳头、点赞、胜利手势等),并提供完整的事件系统来处理手势状态变化。这个系统非常适合用于VR/AR交互、手势控制游戏或任何需要自然用户界面的应用场景。

纯技术流日常开发商业开发记录总结等 582

软件设计师---计算机系统

软件设计师---计算机系统

我从不打没有准备的仗! 3万+

二叉树的构建以及遍历

可能有多组测试数据,对于每组数据,输出将输入字符串建立二叉树后中序遍历的序列,每个字符。输入的是二叉树的先序遍历,所以,我们要通过递归先序遍历的方法,来将这段字符串构建成二叉。任何一个节点,每一个序号表示的是先后顺序,相信大家看完这个图之后会对二叉树的递归遍历有。中序遍历相信大家应该都会了,我这里就不过多赘述了,就是先左子树,再跟最后右子树,递归遍。,看到这幅图我们就会一目了然,包括每一次遍历和返回,我在画这个图的时候,没有省略。树,后面的中序遍历就不是问题了,那么如何写先序遍历呢?

m0_61497245的博客 262

【数字IC验证快速入门】26、SystemVerilog项目实践之AHB-SRAMC(6)(AHB-SRAMC SVTB Overview)

导读:作者有幸在中国电子信息领域的排头兵院校“电子科技大学”攻读研究生期间,接触到前沿的数字IC验证知识,旁听到诸如华为海思、清华紫光、联发科技等业界顶尖集成电路相关企业面授课程,对数字IC验证有了一些知识积累和学习心得。为帮助想入门前端IC验证的朋友,思忱一二后,特开此专栏,以期花最短的时间,走最少的弯路,学最多的IC验证技术知识。 文章目录一、内容概述二、AHB-SRAMC 验证计划 一、内容概述 AHB-SRAMC 验证计划 AHB-SRAMC 验证平台的架构图 AHB-SRAMC 验证平台的代.

悟已往之不谏 知来者之可追 2650

【中等】保研/考研408机试-二叉树相关

二叉树的前序、中序、后序遍历的定义: 前序遍历:对任一子树,先访问根,然后遍历其左子树,最后遍历其右子树;中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树;后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。二叉树中的结点名称以大写字母表示:A,B,C....最多26个结点。可能有多组测试数据,对于每组数据, 输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。输入样例可能有多组,对于每组测试样例, 输出一行,为后序遍历的字符串。,长度不超过100。

m0_62237233的博客 1464

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

清华大学上机题-二叉树遍历

题目链接 #include <iostream> #include <vector> using namespace std; struct node { char c; node *l; node *r; node(char x) : c(x), l(nullptr), r(nullptr) {} }; node* buildTree(int &pos, string str) { if (pos >= str.size()

Handsomk 2157

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【数据结构】二叉树必刷的OJ题 二叉树的遍历 最大深度 平衡二叉树

其实,我们在使用C语言的时候,就发现C语言的缺陷了,C语言没有自己的容器,不支持泛型编程。如果我们会C++的话,使用库里面的容器,大小不需要我们计算,他自己会算。我们采用分治的思想,如果根为0,就返回0,如果根不为0,我们就返回根的左子树的深度和根的右子树的深度较大的那一个,然后 + 1。我们掌握了二叉树的前序遍历,中序和后序遍历只需要改一下根、左子树、右子树的访问次序就可以了。总结:二叉树的很多问题可以采用。

qq_59702185的博客 567

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

OJ题——二叉树(最大深度/平衡二叉树/前序遍历构建)

分享三个关于二叉树的经典题目,其中有一道来自于清华大学复试上机题,感兴趣的小伙伴可以来看看

Demon___1的博客 540

一道清华的上机题目

同学让我帮写的,还写了好多注释,丢掉可惜了,发上来吧。。呵呵 试题三(8个测试数据,每个5分,共40分) 二叉树的前序、中序、后序遍历的定义:前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树;中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树;后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(

liyanguestc的专栏 1067

2025年清华大学计算机考研复试机试真题

2025年清华大学计算机考研复试机试真题

pgcode 1019

2019年计算机类专业保研经历(清华软院、中科院计算所、中科院软件所、南大计算机、清华深圳)

个人基本情况 大连理工大学软件学院软件工程专业 夏令营排名6 / 338,预推免排名4 / 338 大二加入实验室,做了一个项目,无论文 省级大创项目一个 数模国赛国二,亚太一等,mathercup二等,密码数学挑战赛二等,蓝桥省二,数学竞赛预赛国二,校级市级比赛几个,网上的数据挖掘竞赛两个 六级400多 最终推免去向是清华大学软件学院专硕 保研准备建议 前2.5年 好好学习,成绩是核心 学生会、社会工作、志愿活动等这种东西对保研没有啥直接用处。不过间接用处肯定是有的,锻炼一个人的社交能

yu 5205

2006年清华大学计算机科学与技术系硕士研究生招生复试 机试题解

2006年清华大学高性能计算研究所硕士生招生复试 程序设计考试试题 注意事项: 1.        试题共三题,总计100分,考试时间为2小时整。 2.        不得使用自带的电子设备,包括笔记本、U盘、手机等;不得使用参考书籍和资料。 3.        编程环境为Windows 2000 Professional + Visual Studio 6.0,只能使用C/C++语言。...

荷叶田田 645

【考研机试刷题】7 数据结构二

本章包括:题目地址本题要求递归建立二叉树,而不是使用队列的层次建树方法,“递归建树”后再输出中序遍历序列题目地址本题较复杂,先从前序和中序序列得到原二叉树,再输出原二叉树后序序列题目地址此题值得一练,包含了二叉排序树的建树、前中后序遍历题目地址本题判断2个序列是否为同一个二叉搜索树序列,if(它们的中序和先序都一样),则相同,因为可以唯一确定一颗二叉树 笔记 注释较完整 二叉树节点的数据结构、struct内的构造函数 二叉排序树的建树、遍历 main函数中对树的初始化,要初始化为空指针,node* roo

shangkexiaoxing的博客 259

912数据结构教材_怎样科学复习考研数据结构

多年以后,面对考卷,你将会回想起,教授带你去见识数据结构的那个遥远的下午。 数据结构是计算机最重要的专业课,只要还在干这行就逃不掉数据结构的学习和应用。这门课在统考中占到了45分(满分150分),然而这一门课又像毕加索一样抽象,对跨考的同学非常不友好,因此今天就来谈谈数据结构的复习。(本文前边废话较多,不想看的同学可以直接拉到最后一部分:怎样看书。) 知彼知己者,百战...

weixin_39631755的博客 872

武汉工程大学c语言作业,武汉工程大学2016考研《数据结构(C语言版)》考试大纲...

2016考研学习交流群:410257364考试大纲作为考研学子备考复习的方向指南,每年都备受关注,尤其是当年新考试大纲。建议各位考生朋友,在借助往年考试大纲进行复习时,及时关注新考试大纲,以便积极应对其中的变化与调整。中公考研帮大家整理各校考研专业课考试大纲,帮助大家更好的复习!武汉工程大学2016考研《数据结构(C语言版)》考试大纲一.参考教材:1、《数据结构(C语言版)》严蔚敏等,清华大学出版...

weixin_29799209的博客 241
上一篇: 二叉树先序、中序、后序遍历(递归、非递归)及层次遍历以及二叉树线索化以及线索化二叉树六种遍历、并查集(代码演示+注释解析)以及一些真题介绍
下一篇: LeetCode1813:句子相似性 III
天皓Oo
博客等级 码龄5年 337粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值