标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。