用c写一个建立二叉树的代码要求数组从a1到n
时间: 2023-04-06 16:05:12 浏览: 69
我可以回答这个问题。以下是用 C 语言编写建立二叉树的代码:
```
#include <stdio.h>
#include <stdlib.h>
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
struct TreeNode* buildTree(int* nums, int left, int right) {
if (left > right) {
return NULL;
}
int mid = (left + right) / 2;
struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->val = nums[mid];
root->left = buildTree(nums, left, mid - 1);
root->right = buildTree(nums, mid + 1, right);
return root;
}
int main() {
int n;
printf("请输入数组长度 n:");
scanf("%d", &n);
int nums[n];
printf("请输入数组元素:");
for (int i = 0; i < n; i++) {
scanf("%d", &nums[i]);
}
struct TreeNode* root = buildTree(nums, 0, n - 1);
printf("二叉树建立成功!\n");
return 0;
}
```
这个代码可以通过输入一个长度为 n 的数组,建立一个平衡二叉树。具体实现是通过递归的方式,每次取数组的中间元素作为根节点,然后递归建立左子树和右子树。