ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

小米-2020-秋招-软件开发笔试

2022-09-14 13:03:56  阅读:276  来源: 互联网

标签:TreeNode 软件开发 val pos 2020 秋招 input root string


笔试

打印二叉树

一个重建二叉树+中序遍历打印的问题
麻烦的是C++中没有现成的替换字符串中子字符串的函数

#include <iostream>
#include <vector>
#include <stack>
#include <string>

using namespace std;

struct TreeNode {
	char val;
	TreeNode* leftChild;
	TreeNode* rightChild;
	TreeNode(char _val) :val(_val), leftChild(nullptr), rightChild(nullptr) {}
};

TreeNode* buildTree(string input) {
	stack<TreeNode*> nodes;
	// 将字符串转为一个字符数组
	vector<char> nums;
	nums.resize(input.size());
	nums.assign(input.begin(), input.end());

	for (char ch : nums) {
		if (ch >= '0' && ch <= '9') {
			TreeNode* node = new TreeNode(ch);
			nodes.push(node);
		}
		else if (ch == ')') {
			TreeNode* right = nodes.top();
			nodes.pop();
			TreeNode* left = nodes.top();
			nodes.pop();
			nodes.top()->leftChild = left->val == '0' ? nullptr : left;
			nodes.top()->rightChild = right->val == '0' ? nullptr : right;
		}
	}
	return nodes.top();
}

void printTree(TreeNode* root) {
	if (!root) return;
	printTree(root->leftChild);
	cout << root->val;
	printTree(root->rightChild);
}

int main() {

	string _input;
	getline(cin, _input);

	string::size_type pos = 0;
	// string::npos表示直至字符串结尾
	while ((pos = _input.find("(,")) != string::npos) {
		_input.replace(pos, 2, "(0,");
	}
	while ((pos = _input.find(",)")) != string::npos) {
		_input.replace(pos, 2, ",0)");
	}

	TreeNode* root = buildTree(_input);

	printTree(root);

	return 0;
}

// 1(2(3,4(,5)),6(7,))

小米之家购物

很明显是个背包问题

标签:TreeNode,软件开发,val,pos,2020,秋招,input,root,string
来源: https://www.cnblogs.com/yaocy/p/16692642.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有