treerebuilder实例
好的,`TreeRebuilder`一般指二叉树重建,下面是一个二叉树重建的实例,给定先序遍历和中序遍历的结果,通过递归的方式恢复二叉树并输出后序遍历结果:
```cpp
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
string preorder, inorder;
// 后序遍历
void postorder(string pre, string in) {
if (pre.size() <= 0)
return;
int len = 0;
// 在中序遍历中查根节点的位置
len = in.find(pre[0]);
postorder(pre.substr(1, len), in.substr(0, len));
postorder(pre.substr(len + 1), in.substr(len + 1));
cout << pre[0];
}
int main() {
while (cin >> preorder >> inorder) {
postorder(preorder, inorder);
cout << endl;
}
return 0;先序中序后序遍历二叉树
}
```
上述代码中,首先定义了两个字符串`preorder`和`inorder`,分别用于存储先序遍历和中序遍历的结果。然后,函数`postorder`用于进行后序遍历。在`postorder`函数中,通过在`inorder`中查`preorder`的第一个元素的位置,将中序遍历分割为左子树和右子树的中序遍历。最后,在`main`函数中,程序会持续从标准输入读取先序遍历和中序遍历的结果,直到输入结束。每次读取到一组先序遍历和中序遍历的结果后,程序会调用`postorder`函数进行后序遍历,并将结果输出到标准输出。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论