#include <stdio.h> #include <stdlib.h>

// 二叉树结点定义 typedef struct TreeNode { int data; struct TreeNode* left; struct TreeNode* right; } TreeNode;

// 创建一个二叉查找树结点 TreeNode* createNode(int data) { TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode)); if (newNode == NULL) { printf("Memory allocation failed!\n"); exit(1); } newNode->data = data; newNode->left = NULL; newNode->right = NULL; return newNode; }

// 向二叉查找树中插入结点 TreeNode* insertNode(TreeNode* 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 preOrderTraversal(TreeNode* root) { if (root != NULL) { printf("%d ", root->data); preOrderTraversal(root->left); preOrderTraversal(root->right); } }

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

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

// 层序遍历 void levelOrderTraversal(TreeNode* root) { if (root == NULL) { return; } TreeNode* queue[100]; int front = 0, rear = 0; queue[rear++] = root; while (front < rear) { TreeNode* node = queue[front++]; printf("%d ", node->data); if (node->left != NULL) { queue[rear++] = node->left; } if (node->right != NULL) { queue[rear++] = node->right; } } }

int main() { TreeNode* root = NULL; int data; printf("Enter numbers to insert into the binary search tree (0 to stop):\n"); while (1) { scanf("%d", &data); if (data == 0) { break; } root = insertNode(root, data); } printf("Preorder traversal: "); preOrderTraversal(root); printf("\n");

printf("Inorder traversal: ");
inOrderTraversal(root);
printf("\n");

printf("Postorder traversal: ");
postOrderTraversal(root);
printf("\n");

printf("Levelorder traversal: ");
levelOrderTraversal(root);
printf("\n");

return 0;
构建一颗二叉查找树并实现其前序、中序、后序及层序遍历用c语言

原文地址: https://www.cveoy.top/t/topic/ig4W 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录