2301_81071938 2024-04-26 16:44 采纳率: 91.9%
浏览 2
已结题

看着这个不会打我心好痛

构建下列序列的二叉排序树。{3,6,9,16,21,29,56,67,89,99}
用数据结构c语言实现哦

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-26 16:44
    关注

    引自免费微信小程序:皆我百晓生

    为了帮助你构建一个二叉排序树(BST),我们需要遵循二叉排序树的性质:对于任意节点,其左子树中的所有节点值都小于该节点,右子树中的所有节点值都大于该节点。我们可以使用递归的方式来实现这个过程。这里是一个C语言的示例代码,用于构建给定序列的二叉搜索树:

    #include <stdio.h>
    #include <stdlib.h>
    
    // 定义二叉树结点
    typedef struct Node {
        int data;
        struct Node* left;
        struct Node* right;
    } Node;
    
    // 创建新结点
    Node* createNode(int value) {
        Node* newNode = (Node*)malloc(sizeof(Node));
        if (!newNode) {
            printf("Memory allocation failed.\n");
            return NULL;
        }
        newNode->data = value;
        newNode->left = newNode->right = NULL;
        return newNode;
    }
    
    // 插入节点到BST
    Node* insertNode(Node* root, int value) {
        if (root == NULL) {
            return createNode(value);
        }
    
        if (value < root->data) {
            root->left = insertNode(root->left, value);
        } else if (value > root->data) {
            root->right = insertNode(root->right, value);
        }
    
        return root;
    }
    
    // 打印BST
    void printInOrder(Node* root) {
        if (root != NULL) {
            printInOrder(root->left);
            printf("%d ", root->data);
            printInOrder(root->right);
        }
    }
    
    int main() {
        int arr[] = {3, 6, 9, 16, 21, 29, 56, 67, 89, 99};
        int n = sizeof(arr) / sizeof(arr[0]);
    
        Node* root = NULL;
        for (int i = 0; i < n; i++) {
            root = insertNode(root, arr[i]);
        }
    
        printf("Sorted tree in-order traversal: ");
        printInOrder(root);
    
        return 0;
    }
    

    这段代码首先定义了一个二叉树结点结构,然后创建一个函数createNode用于创建新节点,insertNode用于插入节点到BST,printInOrder用于按照BST的特性进行中序遍历并打印节点值。在main函数中,我们使用给定的数组构建BST,并打印出结果。

    运行这段代码后,你将看到构建的二叉排序树的中序遍历结果,它会按照升序排列,符合题目要求。如果你有任何疑问或遇到编译错误,随时告诉我。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月18日
  • 已采纳回答 5月10日
  • 创建了问题 4月26日

悬赏问题

  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价