输入一个数组,请把它生成一棵树,并返回根节点,C++
时间: 2023-11-12 10:09:05 浏览: 59
树状数组(C++版).pdf
可以使用递归的方式,每次找到数组的中间位置作为根节点,然后递归构建左子树和右子树。
以下是C++代码实现:
```c++
#include <iostream>
#include <vector>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
TreeNode* sortedArrayToBST(vector<int>& nums) {
if (nums.empty()) {
return NULL;
}
int n = nums.size();
int mid = n / 2;
TreeNode* root = new TreeNode(nums[mid]);
vector<int> left(nums.begin(), nums.begin() + mid);
vector<int> right(nums.begin() + mid + 1, nums.end());
root->left = sortedArrayToBST(left);
root->right = sortedArrayToBST(right);
return root;
}
int main() {
vector<int> nums = {-10, -3, 0, 5, 9};
TreeNode* root = sortedArrayToBST(nums);
return 0;
}
```
阅读全文