c++用vector数组构建二叉搜索树
时间: 2024-12-14 13:16:21 浏览: 7
最优二叉搜索树的动态规划算法研究.txt
在 C++ 中,使用 `std::vector` 数组构建二叉搜索树 (Binary Search Tree, BST) 需要首先创建节点结构体,并通过迭代的方式将数据插入到BST中。这里是一个简单的步骤概述:
1. **定义节点**:
- 创建一个 `TreeNode` 结构体,包含一个整数值 `val`、一个指向左子节点的指针 `left` 和一个指向右子节点的指针 `right`。
```cpp
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
```
2. **插入元素到BST**:
- 使用一个 vector 存储有序数据。由于 vector 已经提供了排序功能,我们可以先对它进行排序。
- 写一个递归函数 `insertIntoBST(vector<int>& nums, TreeNode*& root, int start, int end)`,从已排序的 vector 开始,每次取中间值作为当前节点,然后递归地在左右子树中插入剩余的数据。
```cpp
void insertIntoBST(TreeNode*& root, int value) {
if (!root || root->val > value) {
root = new TreeNode(value);
} else {
insertIntoBST(root->left, value);
}
}
void buildBST(std::vector<int>& nums) {
sort(nums.begin(), nums.end());
TreeNode* root = nullptr;
for (int num : nums) {
insertIntoBST(root, num);
}
}
```
3. **使用BST进行查找等操作**:
现在你可以用构建好的 `root` 节点来进行查询、添加删除等操作。不过请注意,这只是一个静态的构造,如果需要动态修改,你可能需要维护每个节点的引用计数或其他策略。
阅读全文