酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

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]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]