3 条题解
-
1
#include <bits/stdc++.h> using namespace std; const int N=1e5+9; string a,b,c; void solved(string in,string post,string &pre) { if(in.empty()) return ; char root = post[post.size()-1]; pre+=root; int pos=in.find(root); solved(in.substr(0,pos),post.substr(0,pos),pre); solved(in.substr(pos+1),post.substr(pos,post.size()-pos-1),pre); } int main(){ cin >>a>>b; solved(a,b,c); cout <<c; return 0; } -
1
91、求先序排列(广赋张老师的题解)
#include<bits/stdc++.h> using namespace std; // 中序字符串和后序字符串(全局变量,方便所有函数使用) string zhong, hou; /** * 递归函数:根据中序和后序遍历,构建并返回先序遍历字符串 * zhongL 当前子树在中序字符串中的左边界(下标) * zhongR 当前子树在中序字符串中的右边界(下标) * houL 当前子树在后序字符串中的左边界(下标) * houR 当前子树在后序字符串中的右边界(下标) * return 返回当前子树的先序遍历字符串 */ string tree(int zhongL, int zhongR, int houL, int houR) { // 如果左边界 > 右边界,说明这个区间是空的(没有节点) if (zhongL > zhongR) return ""; // 返回空字符串 // 后序遍历的最后一个节点,就是当前子树的根节点 char root = hou[houR]; // 在中序遍历中找到根节点的位置 // 根节点左边是左子树的中序遍历,右边是右子树的中序遍历 int pos = zhong.find(root); // 计算左子树的长度(节点个数) // 左子树的中序遍历是从 zhongL 到 pos-1 int leftLen = pos - zhongL; // 先序遍历 = 根 + 左子树的先序 + 右子树的先序 return root // 递归处理左子树 // 左子树的中序范围:[zhongL, pos-1] // 左子树的后序范围:[houL, houL + leftLen - 1] + tree(zhongL, pos - 1, houL, houL + leftLen - 1) // 递归处理右子树 // 右子树的中序范围:[pos+1, zhongR] // 右子树的后序范围:[houL + leftLen, houR - 1] + tree(pos + 1, zhongR, houL + leftLen, houR - 1); } int main() { // 输入中序和后序遍历字符串 cin >> zhong >> hou; // 调用递归函数,从整棵树开始(范围是整个字符串) // 字符串下标从0开始,所以右边界是 size()-1 cout << tree(0, zhong.size() - 1, 0, hou.size() - 1); return 0; } -
0
#include <iostream> #include <string> using namespace std; string zhong, hou; string xianxu(string zhong, string hou) { if (zhong.empty()) return ""; string root = hou.substr(hou.size() - 1); int a = zhong.find(root); string zhongLeft = zhong.substr(0,a); string zhongRight = zhong.substr(a + 1); string houLeft = hou.substr(0,zhongLeft.size()); string houRight = hou.substr(houLeft.size(),zhongRight.size()); return root + xianxu(zhongLeft,houLeft) + xianxu(zhongRight,houRight); } int main() { cin>>zhong>>hou; cout<<xianxu(zhong,hou); return 0; }
- 1
信息
- ID
- 91
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 121
- 已通过
- 18
- 上传者