二叉排序树的查代码c语言
二叉排序树的查代码C语言
二叉排序树是一种特殊的二叉树,它满足以下两个条件:
1. 左子树上所有节点的值均小于它的根节点的值;
2. 右子树上所有节点的值均大于它的根节点的值。
因此,在二叉排序树中,每个节点都有一个唯一对应的键值,且该键值在整棵树中是唯一的。这使得在二叉排序树中进行查、插入、删除等操作变得非常高效。
下面给出二叉排序树查操作的C语言代码实现。
1. 定义结构体
首先需要定义一个结构体来表示二叉排序树中每个节点的属性。该结构体包含三个成员:键值key、左子节点指针left和右子节点指针right。
```c
typedef struct node {
    int key;
    struct node *left, *right;
} Node;
```
2. 查函数实现
接下来就可以编写查函数了。为了方便起见,我们将查函数命名为search,并且将其定义为一个递归函数。该函数接收两个参数:指向当前节点的指针p和要查的键值x。
如果当前节点为空,则说明键值x不存在于二叉排序树中,直接返回NULL;否则比较当前节点的键值和要查的键值x,如果相等,则返回当前节点指针p;如果当前节点的键值大
于要查的键值x,则递归调用search函数,在当前节点的左子树中查;如果当前节点的键值小于要查的键值x,则递归调用search函数,在当前节点的右子树中查。
```c
Node* search(Node *p, int x) {
    if (p == NULL || p->key == x) {
        return p;
    } else if (p->key > x) {
        return search(p->left, x);
    } else {
        return search(p->right, x);
    }
}
```
3. 测试代码
最后,我们可以编写一个简单的测试代码来验证上述查函数是否正确。该测试代码首先创建一个二叉排序树,并向其中插入一些随机生成的整数。然后,它会循环读入用户输入的整数,并在二叉排序树中查该整数是否存在。如果存在,则输出“Found”,否则输出“Not found”。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct node {
    int key;
    struct node *left, *right;
} Node;
Node* insert(Node *p, int x) {
    if (p == NULL) {
        p = (Node*)malloc(sizeof(Node));
        p->key = x;
        p->left = NULL;
        p->right = NULL;
    } else if (p->key > x) {
c语言编写递归函数
        p->left = insert(p->left, x);
    } else {
        p->right = insert(p->right, x);
    }
    return p;
}
Node* search(Node *p, int x) {
    if (p == NULL || p->key == x) {
        return p;
    } else if (p->key > x) {
        return search(p->left, x);
    } else {
        return search(p->right, x);
    }
}
int main() {
    Node *root = NULL;
    srand(time(NULL));

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。