C语言实现二叉树操作:可直接输入元素并完成三序遍历
下面是使用C语言编写的二叉树操作的样例代码,包括创建二叉树、插入节点、前序、中序和后序遍历的函数。你可以直接输入元素来创建二叉树并进行遍历。 ```c #include <stdio.h> #include <stdlib.h> struct TreeNode { int data; struct TreeNode* left; struct TreeNode* right; }; // 创建节点 struct TreeNode* createNode(int data) { struct TreeNode* newNode = (struct TreeNode*)malloc(sizeof(struct TreeNode)); if(newNode == NULL){ printf("Memory allocation failed!\n"); return NULL; } newNode->data = data; newNode->left = NULL; newNode->right = NULL; return newNode; } // 插入节点 struct TreeNode* insertNode(struct 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(struct TreeNode* root) { if(root != NULL){ printf("%d ", root->data); preorderTraversal(root->left); preorderTraversal(root->right); } } // 中序遍历 void inorderTraversal(struct TreeNode* root) { if(root != NULL){ inorderTraversal(root->left); printf("%d ", root->data); inorderTraversal(root->right); } } // 后序遍历 void postorderTraversal(struct TreeNode* root) { if(root != NULL){ postorderTraversal(root->left); postorderTraversal(root->right); printf("%d ", root->data); } } int main() { struct TreeNode* root = NULL; int data; printf("请输入二叉树元素(输入-1结束):\n"); while(1){ scanf("%d", &data); if(data == -1){ break; } root = insertNode(root, data); } printf("前序遍历结果:"); preorderTraversal(root); printf("\n"); printf("中序遍历结果:"); inorderTraversal(root); printf("\n"); printf("后序遍历结果:"); postorderTraversal(root); printf("\n"); return 0; } ``` 使用上述代码,你可以按照提示输入二叉树的元素,并输出相应的遍历结果。输入-1表示结束输入。 注意:以上代码只是一个示例,并没有包含所有可能的错误处理和完整的功能。在实际应用中,可能需要根据具体需求进行适当修改和完善。 ######[AI写代码神器 | 1672点数解答 | 2024-06-14 17:18:42]
- Python实现Q老师成绩管理任务:修改与查看学生成绩(字节豆包 | 191点数解答 | 2025-12-20 20:55:41)98
- Python 代码助力 Q 老师高效管理班级学生成绩:修改与查看一键搞定(字节豆包 | 326点数解答 | 2025-12-27 20:48:12)104
- 小核桃破密码遇进度条:补全代码实现百分比加载及完成提示 (字节豆包 | 326点数解答 | 2025-12-13 20:06:10)58
- 小核桃补全代码:实现进度条加载信息输出(字节豆包 | 53点数解答 | 2026-01-10 19:26:25)49
- 小核桃解门密遇进度条,代码补全助其加载完成!(字节豆包 | 90点数解答 | 2026-01-10 19:26:42)47
- 小核桃破解密码遇进度条!C++代码补全助其完成加载(百度文心 | 231点数解答 | 2026-01-10 19:57:04)54
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)371
- C++ 代码揭秘:小核桃大门密码进度条代码解析(字节豆包 | 320点数解答 | 2025-11-28 19:40:52)78
- C++ 代码:助小核桃根据输入整数输出进度及完成提示(字节豆包 | 338点数解答 | 2025-11-28 19:42:04)60
- 小核桃破密码遇进度条:补全代码实现进度输出逻辑(字节豆包 | 106点数解答 | 2025-12-27 20:58:56)53
- 小核桃破解大门密码遇进度条,Python代码补全助其搞定!(字节豆包 | 106点数解答 | 2025-12-27 20:59:05)51
- 小核桃破解大门密码遇进度条:C++代码补全及详细解释(字节豆包 | 300点数解答 | 2025-12-27 20:59:16)52