[保研/考研机试] KY11 二叉树遍历 清华大学复试上机题 C++实现

题目链接:

二叉树遍历_牛客题霸_牛客网编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。题目来自【牛客题霸】https://www.nowcoder.com/share/jump/437195121692547007478

描述

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

输入描述:

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

输出描述:

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

示例1

输入:

cpp 复制代码
abc##de#g##f###

输出:

cpp 复制代码
c b e g d f a 

源代码:

cpp 复制代码
#include<iostream>
#include<string>
using namespace std;

//例题10.1 二叉树遍历
struct TreeNode {
	char data;
	TreeNode* leftChild;
	TreeNode* rightChild;
	TreeNode(char c): data(c), leftChild(NULL), rightChild(NULL){}
};

TreeNode* Build(int& pos, string str) {
	char c = str[pos++];
	if (c == '#') {
		return NULL;
	}
	TreeNode* root = new TreeNode(c);
	root->leftChild = Build(pos, str);
	root->rightChild = Build(pos, str);

	return root;
}

void Inorder(TreeNode* root) {
	if (root == NULL) {
		return;
	}
	Inorder(root->leftChild);
	cout << root->data << " ";
	Inorder(root->rightChild);

	return;
}

int main()
{
	string s;
	cin >> s;
	int pos = 0;
	TreeNode* root = Build(pos, s);
	Inorder(root);
	cout << endl;

	return 0;
}

提交结果:

相关推荐
努力学习的小廉30 分钟前
我爱学算法之—— 模拟(下)
c++·算法
Larry_Yanan1 小时前
QML学习笔记(十七)QML的属性变更信号
javascript·c++·笔记·qt·学习·ui
hsjkdhs2 小时前
C++之拷贝构造(浅拷贝与深拷贝)、this指针、内联函数
c++
默|笙2 小时前
【c++】红黑树的部分实现
开发语言·c++
轩情吖2 小时前
Qt常用控件之QSpinBox
开发语言·c++·qt·控件·桌面级开发·qspinbox·微调框
jinmo_C++3 小时前
数据结构_ 二叉树线索化:从原理到手撕实现
数据结构
shark_dev3 小时前
C/C++ 指针详解与各种指针定义
c语言·c++
tpoog3 小时前
[C++项目组件]cpp-httplib与 websocketpp的简单介绍和使用
开发语言·c++
什么半岛铁盒3 小时前
C++项目:仿muduo库高并发服务器---------LoopThreadPool模块和TcpServer模块的实现
linux·服务器·c++·mysql·ubuntu
lingran__4 小时前
速通ACM省铜第十七天 赋源码(Racing)
c++·算法