写一个二叉搜索树c语言代码
#include <stdio.h> #include <stdlib.h>
// 定义二叉搜索树节点结构体 typedef struct BSTNode { int val; struct BSTNode *left; struct BSTNode *right; } BSTNode;
// 创建一个新的二叉搜索树节点 BSTNode *createNode(int val) { BSTNode *newNode = (BSTNode *)malloc(sizeof(BSTNode)); newNode->val = val; newNode->left = NULL; newNode->right = NULL; return newNode; }
// 插入一个节点到二叉搜索树中 void insertNode(BSTNode **root, int val) { if (*root == NULL) { *root = createNode(val); return; } if (val < (*root)->val) { insertNode(&((*root)->left), val); } else { insertNode(&((*root)->right), val); } }
// 中序遍历二叉搜索树 void inorderTraversal(BSTNode *root) { if (root == NULL) { return; } inorderTraversal(root->left); printf("%d ", root->val); inorderTraversal(root->right); }
// 测试 int main() { BSTNode *root = NULL; insertNode(&root, 5); insertNode(&root, 3); insertNode(&root, 6); insertNode(&root, 2); insertNode(&root, 4); insertNode(&root, 1); inorderTraversal(root); return 0; }
原文地址: https://www.cveoy.top/t/topic/8pZ 著作权归作者所有。请勿转载和采集!