C语言实现二叉树操作及三序遍历,附完整代码与运行结果
以下是使用C语言编写的二叉树的基本操作和三序遍历实现: ```c #include <stdio.h> #include <stdlib.h> // 定义二叉树节点结构 struct TreeNode { int data; struct TreeNode* left; struct TreeNode* right; }; // 创建新节点 struct TreeNode* newNode(int data) { struct TreeNode* node = (struct TreeNode*)malloc(sizeof(struct TreeNode)); node->data = data; node->left = NULL; node->right = NULL; return node; } // 插入节点 struct TreeNode* insertNode(struct TreeNode* root, int data) { // 如果根节点为空,则插入的新节点为根节点 if (root == NULL) { return newNode(data); } else { // 根据二叉搜索树的性质,比较节点值并递归插入左子树或右子树 if (data < root->data) { root->left = insertNode(root->left, data); } else { 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; root = insertNode(root, 5); root = insertNode(root, 3); root = insertNode(root, 7); root = insertNode(root, 2); root = insertNode(root, 4); root = insertNode(root, 6); root = insertNode(root, 8); // 遍历二叉树 printf("Preorder traversal: "); preOrderTraversal(root); printf("\n"); printf("Inorder traversal: "); inOrderTraversal(root); printf("\n"); printf("Postorder traversal: "); postOrderTraversal(root); printf("\n"); return 0; } ``` 运行以上代码,将输出: ``` Preorder traversal: 5 3 2 4 7 6 8 Inorder traversal: 2 3 4 5 6 7 8 Postorder traversal: 2 4 3 6 8 7 5 ``` 这就是二叉树的基本操作和三序遍历的实现。 ######[AI写代码神器 | 1534点数解答 | 2024-06-14 17:18:02]
- 易语言子程序 TriggerCode 代码详解:通配符查找与结果运算(字节豆包 | 607点数解答 | 2026-02-09 11:59:34)52
- Python实现Q老师成绩管理任务:修改与查看学生成绩(字节豆包 | 191点数解答 | 2025-12-20 20:55:41)98
- Python 代码助力 Q 老师高效管理班级学生成绩:修改与查看一键搞定(字节豆包 | 326点数解答 | 2025-12-27 20:48:12)104
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)371
- Python实现多个整数相乘的计算及开发建议(字节豆包 | 427点数解答 | 2026-02-25 19:25:10)45
- 编程求解 1 到 N 的阶乘和:Python 与 C++ 实现(字节豆包 | 650点数解答 | 2026-03-01 20:05:48)25
- C++实现自定义函数计算 f(a)+f(b)+f(c)(字节豆包 | 610点数解答 | 2026-04-11 20:22:28)20
- C++实现找出指定范围内完全数的方法及开发建议(字节豆包 | 692点数解答 | 2026-04-11 20:23:34)19
- C++ 计算 1 到 n 中数字 1 的出现次数的实现与解析(字节豆包 | 849点数解答 | 2026-04-11 20:24:18)23
- JS 巧用 for in 循环逐行输出对象 key:value,还有关键判断!( | 208点数解答 | 2024-05-20 22:15:55)375
- C++ 实现我的世界基岩版:从简单框架到开发要点揭秘(字节豆包 | 182点数解答 | 2025-02-22 15:53:11)212
- C++ 实现完整斗地主:含洗牌、发牌与手牌展示,可按需扩展!(字节豆包 | 1028点数解答 | 2026-01-10 08:02:37)54