数组转树具体步骤及思路,返回代码
时间: 2024-03-03 12:50:00 浏览: 14
数组转树的具体步骤和思路如下:
1. 定义树的结构体,包含节点值和左右子树指针。
2. 定义一个递归函数,该函数接收一个数组、开始和结束索引作为参数。
3. 在递归函数内部,计算数组的中间索引,创建一个新的树节点,并将中间索引指向的数组元素赋值给该节点的值。
4. 递归调用函数,将左半部分的数组传递给函数,并将返回值作为当前节点的左子树指针。
5. 递归调用函数,将右半部分的数组传递给函数,并将返回值作为当前节点的右子树指针。
6. 返回当前节点。
下面是一个示例代码:
```c++
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
TreeNode* arrayToTree(vector<int>& nums, int start, int end) {
if (start > end) {
return nullptr;
}
int mid = (start + end) / 2;
TreeNode* root = new TreeNode(nums[mid]);
root->left = arrayToTree(nums, start, mid - 1);
root->right = arrayToTree(nums, mid + 1, end);
return root;
}
// 示例用法
vector<int> nums = {1, 2, 3, 4, 5, 6, 7};
TreeNode* root = arrayToTree(nums, 0, nums.size() - 1);
```
在示例代码中,我们将数组 `{1, 2, 3, 4, 5, 6, 7}` 转换为如下的二叉搜索树:
```
4
/ \
2 6
/ \ / \
1 3 5 7
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)