用C语言生成一个二叉树
时间: 2023-12-29 09:53:36 浏览: 74
以下是一个简单的 C 代码示例,用于生成二叉树:
```
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结构体
typedef struct node {
int data;
struct node* left;
struct node* right;
} Node;
// 创建新节点
Node* createNode(int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 插入节点
Node* insertNode(Node* root, int data) {
if (root == NULL) {
root = createNode(data);
return root;
} else if (data <= root->data) {
root->left = insertNode(root->left, data);
return root;
} else {
root->right = insertNode(root->right, data);
return root;
}
}
// 按照中序遍历输出二叉树
void inOrderTraversal(Node* root) {
if (root == NULL) {
return;
}
inOrderTraversal(root->left);
printf("%d ", root->data);
inOrderTraversal(root->right);
}
int main() {
// 创建二叉树
Node* root = NULL;
root = insertNode(root, 8);
root = insertNode(root, 3);
root = insertNode(root, 10);
root = insertNode(root, 1);
root = insertNode(root, 6);
root = insertNode(root, 14);
root = insertNode(root, 4);
root = insertNode(root, 7);
root = insertNode(root, 13);
// 输出二叉树
printf("Inorder Traversal: ");
inOrderTraversal(root);
return 0;
}
```
输出:
```
Inorder Traversal: 1 3 4 6 7 8 10 13 14
```
该代码使用递归方式实现二叉树的创建和遍历。在 main 函数中,我们创建了一个二叉树,并按照中序遍历方式输出了它的节点值。
阅读全文