C语言递归法求二叉搜索树源码
时间: 2023-06-10 15:03:51 浏览: 119
二叉搜索树的源代码
以下是使用C语言递归法求二叉搜索树的源代码:
```c
#include <stdio.h>
#include <stdlib.h>
/* 定义二叉搜索树结构体节点 */
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
/* 二叉搜索树插入操作 */
struct TreeNode* insert(struct TreeNode *root, int val) {
if (root == NULL) {
/* 如果树为空,则创建一个新节点 */
root = (struct TreeNode*) malloc(sizeof(struct TreeNode));
root->val = val;
root->left = NULL;
root->right = NULL;
} else if (val < root->val) {
/* 如果节点值小于根节点值,则递归插入左子树中 */
root->left = insert(root->left, val);
} else if (val > root->val) {
/* 如果节点值大于根节点值,则递归插入右子树中 */
root->right = insert(root->right, val);
}
return root;
}
/* 中序遍历二叉搜索树 */
void inorderTraversal(struct TreeNode* root) {
if (root != NULL) {
inorderTraversal(root->left); /* 遍历左子树 */
printf("%d ", root->val); /* 打印当前节点值 */
inorderTraversal(root->right); /* 遍历右子树 */
}
}
int main() {
struct TreeNode *root = NULL;
int arr[] = { 5, 2, 7, 1, 3, 6, 8 };
int n = sizeof(arr) / sizeof(arr[0]);
/* 向二叉搜索树中逐个插入节点 */
for (int i = 0; i < n; i++) {
root = insert(root, arr[i]);
}
/* 中序遍历二叉搜索树,输出所有节点值 */
printf("Inorder Traversal of BST:\n");
inorderTraversal(root);
printf("\n");
return 0;
}
```
以上代码包括二叉搜索树的插入操作和中序遍历操作。在main函数中,创建一个空的二叉搜索树,然后向其中逐个插入数组中的元素。最后,打印所有节点的值,以中序遍历的方式输出。
阅读全文