好的,下面是基于二叉排序树的查找的 C 语言代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node *left;
struct node *right;
} Node;
Node *search(Node *root, int key) {
if (root == NULL || root->data == key) {
return root;
}
if (root->data > key) {
return search(root->left, key);
}
return search(root->right, key);
}
int main() {
// 假设已经构建好了二叉排序树,根节点为 root
Node *root = /* 根节点 */;
int key = /* 要查找的值 */;
Node *result = search(root, key);
if (result == NULL) {
printf("未找到值为 %d 的节点\n", key);
} else {
printf("找到值为 %d 的节点\n", result->data);
}
return 0;
}
在这段代码中,我们定义了一个 Node
类型的结构体,表示二叉排序树的节点。然后我们定义了一个名为 search
的函数,用于在二叉排序树中查找给定的值。
函数的第一个参数 root
是二叉排序树的根节点,第二个参数 key
是要查找的值。如果在二叉排序树中找到了值为 key
的节点,则函数会返回该节点的指针,否则返回 NULL
。
在函数中,我们首先判断二叉排序树是否为空,或者根节点的值是否等于 key
,如果是,则返