c语言写程序,创建一个具有十个节点的完全二叉树 要求:先定义二叉树的节点,该程序返回创
时间: 2023-11-27 14:55:08 浏览: 52
建的完全二叉树的根节点。
以下是创建具有十个节点的完全二叉树的示例程序:
```c
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node *left;
struct node *right;
};
struct node* create_node(int data) {
struct node* new_node = (struct node*) malloc(sizeof(struct node));
new_node->data = data;
new_node->left = NULL;
new_node->right = NULL;
return new_node;
}
struct node* create_complete_binary_tree(int arr[], int i, int n) {
if (i >= n)
return NULL;
struct node* root = create_node(arr[i]);
root->left = create_complete_binary_tree(arr, 2*i+1, n);
root->right = create_complete_binary_tree(arr, 2*i+2, n);
return root;
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n = sizeof(arr)/sizeof(arr[0]);
struct node* root = create_complete_binary_tree(arr, 0, n);
printf("Created a complete binary tree with 10 nodes.\n");
printf("Root node: %d\n", root->data);
return 0;
}
```
在这个程序中,我们首先定义了一个节点结构体,其中包含数据、左子节点和右子节点。然后定义了一个用于创建新节点的函数 `create_node()`。
接着,我们定义了一个递归函数 `create_complete_binary_tree()`,它接受一个数组、一个索引和数组的大小作为输入。该函数首先创建一个节点,然后递归地调用自身来创建该节点的左子树和右子树。
最后,我们在 `main()` 函数中调用 `create_complete_binary_tree()` 函数来创建一个具有十个节点的完全二叉树,并输出其根节点。