C语言实现:先序创建二叉树并进行先序、中序、后序遍历
下面是一个用C语言实现的程序,它按照先序输入创建二叉树的二叉链表,并进行先序、中序和后序遍历。 ```c #include <stdio.h> #include <stdlib.h> // 定义二叉树节点结构 typedef struct TreeNode { char data; struct TreeNode *left; struct TreeNode *right; } TreeNode; // 创建二叉树 TreeNode* createTree() { char ch; scanf("%c", &ch); if (ch == '#') { return NULL; } TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode)); node->data = ch; node->left = createTree(); node->right = createTree(); return node; } // 先序遍历 void preOrder(TreeNode* root) { if (root == NULL) { return; } printf("%c", root->data); preOrder(root->left); preOrder(root->right); } // 中序遍历 void inOrder(TreeNode* root) { if (root == NULL) { return; } inOrder(root->left); printf("%c", root->data); inOrder(root->right); } // 后序遍历 void postOrder(TreeNode* root) { if (root == NULL) { return; } postOrder(root->left); postOrder(root->right); printf("%c", root->data); } int main() { TreeNode* root = createTree(); preOrder(root); printf("\n"); inOrder(root); printf("\n"); postOrder(root); printf("\n"); return 0; } ``` 代码说明: 1. `createTree()` 函数用于递归地创建二叉树。输入字符为 `#` 时表示空节点。 2. `preOrder()`、`inOrder()` 和 `postOrder()` 函数分别用于先序、中序和后序遍历二叉树。 3. `main()` 函数中调用这些函数来创建树并进行遍历。 输入示例: ``` ABD##E##CF ``` 输出示例: ``` ABDECF DBEAFC DEBFCA ``` 需要注意的逻辑点: 1. 输入时确保字符之间没有空格,且空树用 `#` 表示。 2. 遍历函数中,递归调用时要注意递归的终止条件,即节点为 `NULL` 时返回。 3. 输出时每行首尾不得有多余空格,序列中不含 `#`。 ######[AI写代码神器 | 536点数解答 | 2025-03-19 11:28:01]
- C++实现顺序存储结构基本操作:初始化、插入、删除等全解析(GPT | 1743点数解答 | 2024-09-26 00:20:17)296
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)370
- Java 创建 HTTP POST 请求实现文件上传:代码示例与注意要点 (字节豆包 | 300点数解答 | 2024-12-06 16:07:20)353
- 工程师必看!LoadRunner 性能测试标准流程全揭秘 (百度文心 | 215点数解答 | 2023-11-09 18:25:31)391
- Python 求解序列区间总和:索引转换、边界处理与优化策略(字节豆包 | 320点数解答 | 2025-11-05 19:59:35)94
- C++ 实现序列区间查询:计算以 l 开头子区间总和及注意要点(字节豆包 | 543点数解答 | 2025-11-05 19:59:56)55
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)341
- JS 巧用 for in 循环逐行输出对象 key:value,还有关键判断!( | 208点数解答 | 2024-05-20 22:15:55)375
- Python知识大挑战:10 道题揭秘编程关键要点与答案(字节豆包 | 296点数解答 | 2024-10-20 19:31:00)241
- C++ 实现根据输入正整数奇偶性计算偶数和或约数和(字节豆包 | 838点数解答 | 2026-02-28 20:23:59)50
- 去掉注释后的C++完全数查找代码(字节豆包 | 207点数解答 | 2026-03-14 20:06:22)17
- Java顺序表源码深度解析:从内存布局到扩容机制与Windows实战指南(阿里通义 | 2528点数解答 | 2026-04-01 10:06:46)23