前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C 语言代码示例,展示了如何实现一个简单的二叉搜索树(Binary Search Tree): #include <stdio.h> #include <stdlib.h> // 二叉搜索树节点结构

C 语言代码示例,展示了如何实现一个简单的二叉搜索树(Binary Search Tree): #include <stdio.h> #include <stdlib.h> // 二叉搜索树节点结构

作者头像
青灯古酒
发布2023-10-16 08:57:16
1450
发布2023-10-16 08:57:16
举报
文章被收录于专栏:青灯古酒青灯古酒

C 语言代码示例,展示了如何实现一个简单的二叉搜索树(Binary Search Tree):

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

// 二叉搜索树节点结构体
typedef struct Node {
    int data;
    struct Node* left;
    struct Node* right;
} Node;

// 创建新节点
Node* createNode(int data) {
    Node* newNode = malloc(sizeof(Node));
    if (newNode == NULL) {
        perror("Memory allocation failed");
        exit(EXIT_FAILURE);
    }
    
    newNode->data = data;
    newNode->left = newNode->right = NULL;
    
    return newNode;
}

// 插入节点
Node* insertNode(Node* root, int data) {
    if (root == NULL) {
        return createNode(data);
    }
    
    if (data < root->data) {
        root->left = insertNode(root->left, data);
    } else if (data > root->data) {
        root->right = insertNode(root->right, data);
    }
    
    return root;
}

// 中序遍历
void inOrderTraversal(Node* root) {
    if (root != NULL) {
        inOrderTraversal(root->left);
        printf("%d ", root->data);
        inOrderTraversal(root->right);
    }
}

int main() {
    Node* root = NULL;
    
    // 插入节点
    root = insertNode(root, 5);
    root = insertNode(root, 3);
    root = insertNode(root, 8);
    root = insertNode(root, 1);
    root = insertNode(root, 4);
    root = insertNode(root, 7);
    root = insertNode(root, 9);
    
    // 中序遍历并打印结果
    printf("中序遍历结果:");
    inOrderTraversal(root);
    printf("\n");
    
    return 0;
}

上述代码中,我们定义了一个二叉搜索树节点结构体 Node,每个节点包含一个整型数据 data,以及左子树和右子树的指针。我们实现了以下几个函数:

  • createNode:用于创建一个新的节点,并初始化数据和指针。
  • insertNode:用于向二叉搜索树中插入新节点。若插入的数据小于当前节点的数据,则将其插入到左子树;若大于,则插入到右子树。
  • inOrderTraversal:用于进行中序遍历,按照节点的顺序打印数据。

main 函数中,我们创建了一个空的二叉搜索树 root,并插入一些节点。最后,我们进行中序遍历,并打印结果。

请注意,这只是一个相对复杂的示例代码,演示了如何实现一个简单的二叉搜索树。在实际编写代码时,根据具体需求考虑不同类型的树结构以及相关操作,并谨慎处理内存分配和释放,以避免内存泄漏和其他问题。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档