中序后序构建二叉树C++代码
时间: 2023-11-20 16:07:50 浏览: 89
以下是中序后序构建二叉树的C++代码实现:
```
#include <iostream>
#include <string>
using namespace std;
struct BinTree {
char data;
struct BinTree *left, *right;
};
void preOrderTraversal(BinTree *root) //先序遍历
{
if (root == NULL)
return;
cout << root->data;
preOrderTraversal(root->left);
preOrderTraversal(root->right);
}
BinTree *PostIncreat(string in, string post)
{
int n = in.length(); //获取字符串长度
if (n == 0)
{
return NULL;
} //递归出口,当长度为0,则回溯。
BinTree *root = new BinTree;
char last = post[n - 1]; //获取根节点
root->data = last;
int i = 0;
while (in[i] != last)
{
i++;
}
root->left = PostIncreat(in.substr(0, i), post.substr(0, i));
root->right = PostIncreat(in.substr(i + 1, n - i - 1), post.substr(i, n - i - 1));
return root;
}
int main()
{
string in, post;
cin >> in >> post;
preOrderTraversal(PostIncreat(in, post));
return 0;
}
```
注意:要想构建二叉树,必须知道中序遍历,这样才可以知道根节点,进而确定左右子树。有前序和后序不能够构建二叉树。
阅读全文