写一段以中序遍历的顺序建立二叉链表的C++代码
时间: 2024-03-23 12:40:04 浏览: 73
以下是以中序遍历的顺序建立二叉链表的C++代码:
```c++
#include <iostream>
using namespace std;
// 定义二叉树结构体
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 中序遍历建立二叉链表
void buildTree(TreeNode* &root, int arr[], int start, int end) {
if (start > end) return; // 递归终止条件
int mid = (start + end) / 2;
root = new TreeNode(arr[mid]); // 根节点为中间元素
buildTree(root->left, arr, start, mid - 1); // 递归构建左子树
buildTree(root->right, arr, mid + 1, end); // 递归构建右子树
}
// 中序遍历打印二叉树
void inorderTraversal(TreeNode* root) {
if (root == NULL) return;
inorderTraversal(root->left);
cout << root->val << " ";
inorderTraversal(root->right);
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
TreeNode* root;
buildTree(root, arr, 0, n - 1);
inorderTraversal(root);
return 0;
}
```
这段代码中,我们先定义了二叉树的结构体 `TreeNode`,其中包含节点的值 `val`、左子树指针 `left` 和右子树指针 `right`。然后,我们使用递归的方式,根据中序遍历的顺序建立二叉链表。具体来说,我们每次将中间元素作为根节点,然后递归构建左子树和右子树。最后,我们使用中序遍历的方式打印二叉树,以验证建立的结果是否正确。
阅读全文