tveoriu 2023-04-25 09:01 采纳率: 100%
浏览 55
已结题

如何编写代码,计算二叉排序树T中,关键字key的查找长度

Help,如何编写代码,计算二叉排序树T中,关键字key的查找长度

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-04-25 09:41
    关注
    #include <stdio.h>
    #include <stdlib.h>
    
    // 二叉排序树节点定义
    typedef struct node {
        int key;           // 节点关键字
        struct node* left; // 左子节点
        struct node* right; // 右子节点
    } Node;
    
    // 在二叉排序树T中插入关键字key
    Node* insert(Node* T, int key) {
        if (T == NULL) {
            T = (Node*)malloc(sizeof(Node));
            T->key = key;
            T->left = NULL;
            T->right = NULL;
        } else {
            if (key < T->key) {
                T->left = insert(T->left, key);
            } else if (key > T->key) {
                T->right = insert(T->right, key);
            }
        }
        return T;
    }
    
    // 在二叉排序树T中查找关键字key的查找长度,初始长度为0
    int search(Node* T, int key, int len) {
        if (T == NULL) {
            return -1; // 没找到
        } else if (key < T->key) {
            return search(T->left, key, len + 1);
        } else if (key > T->key) {
            return search(T->right, key, len + 1);
        } else {
            return len + 1; // 找到了
        }
    }
    
    int main() {
        // 创建一个二叉排序树
        Node* T = NULL;
        T = insert(T, 8);
        T = insert(T, 3);
        T = insert(T, 10);
        T = insert(T, 1);
        T = insert(T, 6);
        T = insert(T, 4);
        T = insert(T, 7);
        T = insert(T, 14);
        T = insert(T, 13);
    
        // 查找和计算查找长度
        int key = 7;
        int len = search(T, key, 0);
    
        // 输出结果
        if (len < 0) {
            printf("Key not found\n");
        } else {
            printf("Key %d found, search length: %d\n", key, len);
        }
    
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月3日
  • 已采纳回答 4月25日
  • 创建了问题 4月25日