c++写一段代码:二叉树的创建以及数据的输入
时间: 2024-11-06 12:17:45 浏览: 10
在C++中,我们可以使用结构体或类来表示二叉树节点,并通过递归的方式创建树。这里是一个简单的示例,我们先定义一个二叉树节点,然后创建一个函数用于输入数据并构建二叉搜索树:
```cpp
#include <iostream>
// 定义二叉树节点
struct TreeNode {
int val; // 节点值
TreeNode* left; // 左孩子指针
TreeNode* right; // 右孩子指针
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} // 构造函数
};
// 创建二叉搜索树并输入数据
TreeNode* createBST(int arr[], int start, int end) {
if (start > end)
return nullptr;
int mid = (start + end) / 2;
TreeNode* root = new TreeNode(arr[mid]);
root->left = createBST(arr, start, mid - 1); // 递归左子树
root->right = createBST(arr, mid + 1, end); // 递归右子树
return root;
}
// 主函数,演示如何创建二叉搜索树并输入数据
int main() {
int data[] = {5, 3, 7, 2, 4, 6, 8};
int n = sizeof(data) / sizeof(data[0]);
TreeNode* root = createBST(data, 0, n - 1);
if (!root)
std::cout << "Tree is empty!\n";
else
printInOrder(root); // 示例:辅助函数,按顺序打印二叉树
return 0;
}
// 中序遍历(示例)用于打印二叉树
void printInOrder(TreeNode* node) {
if (node != nullptr) {
printInOrder(node->left);
std::cout << node->val << " ";
printInOrder(node->right);
}
}
```
在这个例子中,`createBST`函数递归地将数组元素插入到适当的位置以构建二叉搜索树。主函数创建了一个整数数组,并调用这个函数建立树。`printInOrder`函数则用于打印按照升序排列的树节点。
阅读全文