前序建立一棵二叉树C语言
时间: 2023-06-13 18:03:04 浏览: 83
c语言构建二叉树
下面是一个简单的二叉树结构体及其创建函数的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
TreeNode* createNode(int data) {
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->data = data;
node->left = NULL;
node->right = NULL;
return node;
}
void insert(TreeNode** root, int data) {
if (*root == NULL) {
*root = createNode(data);
} else if (data < (*root)->data) {
insert(&((*root)->left), data);
} else {
insert(&((*root)->right), data);
}
}
TreeNode* createBinarySearchTree(int* arr, int size) {
TreeNode* root = NULL;
for (int i = 0; i < size; i++) {
insert(&root, arr[i]);
}
return root;
}
void inorderTraversal(TreeNode* root) {
if (root) {
inorderTraversal(root->left);
printf("%d ", root->data);
inorderTraversal(root->right);
}
}
int main() {
int arr[] = {5, 3, 7, 2, 4, 6, 8};
int size = sizeof(arr) / sizeof(int);
TreeNode* root = createBinarySearchTree(arr, size);
inorderTraversal(root);
printf("\n");
return 0;
}
```
这个示例代码中,我们定义了一个二叉树的结构体 `TreeNode`,包含了当前节点的值、左子节点和右子节点。接着,我们定义了一个 `createNode` 函数,用于创建一个新的二叉树节点,并返回指向该节点的指针。
我们还定义了一个 `insert` 函数,用于将一个新的节点插入到二叉搜索树中。该函数的参数包括一个指向根节点的指针和要插入的节点值。函数首先判断根节点是否为空,如果为空,则创建一个新的节点并将其作为根节点。如果根节点不为空,则根据节点值的大小将其插入到左子树或右子树中。
最后,我们定义了一个 `createBinarySearchTree` 函数,用于创建一个二叉搜索树。该函数的参数包括一个整型数组和数组的大小。在函数内部,我们循环遍历数组中的所有元素,调用 `insert` 函数将其插入到二叉搜索树中。
最后,我们定义了一个 `inorderTraversal` 函数,用于按中序遍历方式遍历二叉树,并打印出每个节点的值。在 `main` 函数中,我们创建了一个整型数组,调用 `createBinarySearchTree` 函数创建了一个二叉搜索树,并调用 `inorderTraversal` 函数按中序遍历方式遍历该二叉搜索树并打印出节点的值。
阅读全文