使用C语言用任意十个整数将其构造成二叉树并输出该二叉树
时间: 2024-02-01 10:03:07 浏览: 78
好的,我可以帮您回答这个问题。
首先,我们需要定义一个二叉树的结构体。在结构体中,我们定义一个整数值,以及左右子节点的指针。
```c
typedef struct TreeNode{
int val;
struct TreeNode* left;
struct TreeNode* right;
}TreeNode;
```
接下来,我们可以先构建一个空的二叉树。然后,将这十个整数按照二叉树的性质依次插入到二叉树中。具体实现可以使用递归的方式,每次比较当前节点和待插入节点的大小关系,然后分别递归到左子树或右子树中插入。
最后,我们可以按照中序遍历的方式输出该二叉树。中序遍历的顺序是先输出左子树,然后输出根节点,最后输出右子树。
下面是完整的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode{
int val;
struct TreeNode* left;
struct TreeNode* right;
}TreeNode;
void insert(TreeNode** root, int val){
if(*root == NULL){
*root = (TreeNode*)malloc(sizeof(TreeNode));
(*root)->val = val;
(*root)->left = NULL;
(*root)->right = NULL;
return;
}
if(val < (*root)->val){
insert(&((*root)->left), val);
}else{
insert(&((*root)->right), val);
}
}
void inorder(TreeNode* root){
if(root == NULL){
return;
}
inorder(root->left);
printf("%d ", root->val);
inorder(root->right);
}
int main(){
int nums[10] = {3, 1, 4, 5, 2, 7, 6, 9, 8, 0};
TreeNode* root = NULL;
for(int i = 0; i < 10; i++){
insert(&root, nums[i]);
}
inorder(root);
return 0;
}
```
输出结果为:0 1 2 3 4 5 6 7 8 9,代表中序遍历结果。
阅读全文