#include <stdio.h> #include <stdlib.h>

// 二叉排序树的结点结构 typedef struct TreeNode { int data; // 结点的值 struct TreeNode* left; // 左子树指针 struct TreeNode* right; // 右子树指针 } TreeNode;

// 创建二叉排序树 void createBST(TreeNode** root, int data) { if (*root == NULL) { root = (TreeNode)malloc(sizeof(TreeNode)); (*root)->data = data; (*root)->left = NULL; (*root)->right = NULL; } else { if (data < (*root)->data) { createBST(&((*root)->left), data); } else if (data > (*root)->data) { createBST(&((*root)->right), data); } } }

// 在二叉排序树中查找指定值 TreeNode* searchBST(TreeNode* root, int target) { if (root == NULL || root->data == target) { return root; } else if (target < root->data) { return searchBST(root->left, target); } else { return searchBST(root->right, target); } }

// 输出二叉排序树的中序遍历结果 void inorderTraversal(TreeNode* root) { if (root != NULL) { inorderTraversal(root->left); printf("%d ", root->data); inorderTraversal(root->right); } }

int main() { TreeNode* root = NULL; int n, data, target;

// 读入一串整数
printf("请输入整数的个数:");
scanf("%d", &n);
printf("请输入整数:");
for (int i = 0; i < n; i++) {
    scanf("%d", &data);
    createBST(&root, data);
}

// 给定一个值,在二叉排序树中进行查找
printf("请输入要查找的值:");
scanf("%d", &target);
TreeNode* result = searchBST(root, target);

// 输出查找结果
if (result == NULL) {
    printf("未找到该值!\n");
} else {
    printf("找到了该值!\n");
}

// 输出二叉排序树的中序遍历结果
printf("二叉排序树的中序遍历结果为:");
inorderTraversal(root);

return 0;

}

C语言实现二叉排序树查找功能

原文地址: https://www.cveoy.top/t/topic/f3Y0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录