利用先序遍历创建二叉树,并给出相应二叉树的中序遍历结果。#include "binary_tree.h" … /********** End **********/ }
时间: 2023-09-04 13:13:23 浏览: 46
以下是利用先序遍历创建二叉树并输出中序遍历结果的代码实现:
```c++
#include <iostream>
#include "binary_tree.h"
using namespace std;
// 根据先序遍历序列创建二叉树
TreeNode* createBinaryTree(int* preorder, int start, int end) {
if (start > end) {
return nullptr;
}
TreeNode* root = new TreeNode(preorder[start]);
int idx = start + 1;
while (idx <= end && preorder[idx] < preorder[start]) {
idx++;
}
root->left = createBinaryTree(preorder, start + 1, idx - 1);
root->right = createBinaryTree(preorder, idx, end);
return root;
}
// 中序遍历二叉树
void inorderTraversal(TreeNode* root) {
if (root == nullptr) {
return;
}
inorderTraversal(root->left);
cout << root->val << " ";
inorderTraversal(root->right);
}
int main() {
int preorder[] = {5, 3, 1, 4, 7, 6, 8};
int n = sizeof(preorder) / sizeof(preorder[0]);
TreeNode* root = createBinaryTree(preorder, 0, n - 1);
cout << "中序遍历结果:";
inorderTraversal(root);
cout << endl;
return 0;
}
```
输出结果为:
```
中序遍历结果:1 3 4 5 6 7 8
```