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

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

#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,并插入一些节点。最后,我们进行中序遍历,并打印结果。

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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  eHipUjOuzYYH   2023年12月07日   28   0   0 数据乐观锁redis
  jnZtF7Co41Wg   2023年12月09日   28   0   0 客户端服务端数据
OidTDJjkUiJ3