根据二叉树先序和中序,输出二叉树后序遍历

二叉树后序遍历

http://www.nowcoder.com/questionTerminal/c8dbc39e4c784cc69c8f263b32220165

include

include

include

using namespace std;
class TreeNode {
public:
char val;
TreeNode* left;
TreeNode* right;
TreeNode(int value) :val(value) { this->left = this->right = NULL; };
};
TreeNode* Construct(vector<char>pre, vector<char>vin) {
if (pre.size() == 0 || vin.size() == 0) { return NULL; }
TreeNode* root = new TreeNode(pre[0]);
root->left = root->right = NULL;
vector<char>leftpre, rightpre, leftvin, rightvin;
int i = 0;
for (; i<vin.size(); ++i) {
if (vin[i] == pre[0]) { break; }
leftvin.push_back(vin[i]);
}
if (i<=vin.size()) {
for (int j = i + 1; j<vin.size(); ++j) {
rightvin.push_back(vin[j]);
}
for (int j = 1; j <= i; ++j) {
leftpre.push_back(pre[j]);
}
for (int j = i + 1; j<vin.size(); ++j) {
rightpre.push_back(pre[j]);
}
root->left = Construct(leftpre, leftvin);
root->right = Construct(rightpre, rightvin);
return root;
}
else {
return NULL;
}
}
void lastsearch(TreeNode* temp, vector<char>&vec) {
if (temp->left != NULL) { lastsearch(temp->left, vec); }
if (temp->right != NULL) { lastsearch(temp->right, vec); }
vec.push_back(temp->val);
}
int main() {
vector<char>m_a, m_b, m_c;
string a, b;
cin >> a >> b;
for (int i = 0; i < a.size(); ++i) {
m_a.push_back(a[i]);
m_b.push_back(b[i]);
}
TreeNode* root = Construct(m_a, m_b);
lastsearch(root, m_c);
for (int i = 0; i<m_c.size(); ++i) { cout << m_c[i]; }cout << endl;
cin.get();
cin.get();
return 0;
}</char></char></char></char></char>

全部评论

相关推荐

03-19 10:07
已编辑
广东药科大学 golang
Yki_:你倒是进一个面啊
点赞 评论 收藏
分享
渐好:软光栅真的写明白了吗,既然是软渲那技术栈不应该使用OpenGL,光追和bvh既不算什么高级渲染技术更不应该属于软渲的内容,git那个项目没啥用,建议把前两个项目重新组织一下语言,比如软渲染那个项目 冯着色和msaa、贴图这几项分开写,写的到位点,如果你还学过光追那就单独写出来,如果没把握考官问你答不上来就别写给自己找麻烦,在技术栈那一栏简单提一下自己学过就行,这样杂的放在一起不太严谨,个人愚见.
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务