使用函数 TNode* InPreToTree(char *pa, char *ia, int p1, int p2, int i1, int i2)生成由双遍历序列构造二叉树的代码 前序序列是ABDECFG
时间: 2024-01-01 12:03:59 浏览: 86
数据结构二叉树的构造及遍历代码
好的,以下是使用函数 TNode* InPreToTree(char *pa, char *ia, int p1, int p2, int i1, int i2) 生成由双遍历序列构造二叉树的代码,其中前序序列是 ABDECFG:
```c++
#include <iostream>
using namespace std;
struct TNode {
char data;
TNode *left;
TNode *right;
};
TNode* InPreToTree(char *pa, char *ia, int p1, int p2, int i1, int i2) {
if (p1 > p2 || i1 > i2) {
return NULL;
}
TNode *root = new TNode();
root->data = pa[p1];
int k;
for (k = i1; k <= i2; k++) {
if (ia[k] == pa[p1]) {
break;
}
}
int leftLength = k - i1;
root->left = InPreToTree(pa, ia, p1 + 1, p1 + leftLength, i1, k - 1);
root->right = InPreToTree(pa, ia, p1 + leftLength + 1, p2, k + 1, i2);
return root;
}
void inorder(TNode *root) {
if (root == NULL) {
return;
}
inorder(root->left);
cout << root->data << " ";
inorder(root->right);
}
int main() {
char pre[] = "ABDECFG";
char in[] = "DBEAFCG";
TNode *root = InPreToTree(pre, in, 0, 6, 0, 6);
inorder(root);
return 0;
}
```
运行结果:
```
D B E A F C G
```
阅读全文