二叉搜索树递归查找函数代码c语言
时间: 2024-10-19 18:14:34 浏览: 35
在 C 语言中,二叉搜索树 (Binary Search Tree, BST) 的递归查找函数通常会按照这样的逻辑编写:
```c
// 定义二叉搜索树结点结构体
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} Node;
// 递归查找函数
int searchBST(Node* root, int target) {
if (root == NULL || root->val == target) { // 如果根节点为空,或者找到了目标值,返回结果
return root ? 1 : 0; // 结果为1表示找到,0表示未找到
}
// 递归查找左子树还是右子树
if (target < root->val) {
return searchBST(root->left, target);
} else {
return searchBST(root->right, target);
}
}
```
这个函数接收两个参数:一个是当前遍历到的节点指针 `root`,另一个是需要查找的目标值 `target`。如果 `root` 为空或者 `root` 的值等于目标值,就返回相应的结果;否则,根据二叉搜索树的性质(左子树的所有节点都小于根节点,右子树的所有节点都大于根节点),继续在对应分支上递归查找。
相关问题
二叉排序树的递归查找算法c语言
二叉排序树(Binary Search Tree, BST)是一种特殊的二叉树,其中每个节点的左子树包含的所有节点值都小于该节点,右子树包含的所有节点值都大于该节点。递归查找算法在BST中非常直观,它的基本思想是:如果目标值等于当前节点的值,就找到了;如果目标值小于当前节点,就在左子树中递归查找;如果目标值大于当前节点,就在右子树中递归查找。
以下是一个简单的C语言递归查找算法的示例:
```c
// 假设我们有一个名为Node的结构体,其中包含val(值)、left和right指针
typedef struct Node {
int val;
struct Node* left;
struct Node* right;
} Node;
// 二叉搜索树查找函数
Node* search(Node* root, int target) {
// 基本情况:如果根节点为空或找到了目标值
if (root == NULL || root->val == target)
return root;
// 如果目标值小于根节点,递归查找左子树
if (target < root->val)
return search(root->left, target);
// 否则在右子树查找
return search(root->right, target);
}
```
二叉树递归查找函数代码C语言
在C语言中,二叉搜索树的递归查找函数通常用于在一个已排序的二叉树中查找特定元素。假设我们有一个结构`Node`表示二叉树节点,包含`key`, `value`, 和指向左右子节点的指针`left`和`right`,那么查找函数可以像这样编写:
```c
// 假设 Node 结构体如下:
typedef struct Node {
int key;
int value;
struct Node* left;
struct Node* right;
} Node;
// 递归查找函数
int search(Node* root, int target) {
if (root == NULL || root->key == target) { // 如果根为空或找到目标值
return root ? root->value : -1; // 返回值(存在则返回,不存在返回-1)
}
// 否则根据目标值大于还是小于当前节点的值来决定往左还是右查找
if (target < root->key) {
return search(root->left, target); // 左子树递归查找
} else {
return search(root->right, target); // 右子树递归查找
}
}
```
在这个函数中,如果目标值等于当前节点的值,就找到了并返回对应的值;如果目标值小于当前值,则在左子树中继续查找;如果目标值大于当前值,则在右子树中查找。
阅读全文