c++将数组中的元素构造二叉搜索树
时间: 2023-10-03 19:07:17 浏览: 106
可以通过递归的方式将一个数组中的元素构造成一个二叉搜索树。具体步骤如下:
1. 选取数组中的中间元素作为根节点。
2. 将数组分为左右两个部分,分别构造左子树和右子树。
3. 递归执行步骤1和2,直到数组为空。
下面是一个示例代码,其中 `arr` 表示输入的数组,`l` 和 `r` 分别表示数组的左右边界:
```c++
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
TreeNode* buildBST(vector<int>& arr, int l, int r) {
if (l > r) {
return nullptr;
}
int mid = (l + r) / 2;
TreeNode* root = new TreeNode(arr[mid]);
root->left = buildBST(arr, l, mid - 1);
root->right = buildBST(arr, mid + 1, r);
return root;
}
// 示例调用方法
int main() {
vector<int> arr = {1, 2, 3, 4, 5, 6, 7};
TreeNode* root = buildBST(arr, 0, arr.size() - 1);
// ...
return 0;
}
```
在上面的代码中,`buildBST` 函数用于构造二叉搜索树,其参数 `l` 和 `r` 表示当前递归的数组范围。我们首先计算出数组的中间元素,作为根节点,然后递归构造左子树和右子树。当数组范围为空时,返回 `nullptr` 表示该子树为空。最后返回根节点即可。
阅读全文