#include <stdlib.h> #include<iostream> #include<cstdlib> using namespace std; #define Status int typedef struct BiTNode { char data; BiTNode* lchild, * rchild; }BiTNode, * BiTree; Status CreateTreeByPrio(BiTree& T) { //按先序次序输入二叉树结点的值 char ch; cin >> ch; if (ch == '#') T = NULL; else { T = new BiTNode; T->data = ch; CreateTreeByPrio(T->lchild); CreateTreeByPrio(T->rchild); } return 1; } //先序递归 void Prior_Order(BiTree T) { if (T != NULL) { cout << T->data << ' '; Prior_Order(T->lchild); Prior_Order(T->rchild); } } //中序递归 void Mid_Order(BiTree T) { if (T != NULL) { Mid_Order(T->lchild); cout << T->data << ' '; Mid_Order(T->rchild); } } //后序递归 void Post_Order(BiTree T) { if (T != NULL) { Post_Order(T->lchild); Post_Order(T->rchild); cout << T->data << ' '; } } int main() { BiTree T; CreateTreeByPrio(T); cout << "先序序列:"; Prior_Order(T); cout << endl; cout << "中序序列:"; Mid_Order(T); cout << endl; cout << "后序遍历:"; Post_Order(T); cout << endl; system("pause"); return 0; }
时间: 2024-01-27 10:05:24 浏览: 32
这段代码实现了二叉树的创建和三种遍历方式(先序、中序、后序)。
其中,二叉树的创建采用先序遍历的方式,输入二叉树结点的值,如果值为'#',则表示该结点为空;否则,创建一个新的结点,将值赋给该结点,并递归创建其左右子树。
三种遍历方式均采用递归的方式实现,先序遍历先输出结点值,再遍历左子树和右子树;中序遍历先遍历左子树,再输出结点值,最后遍历右子树;后序遍历先遍历左子树,再遍历右子树,最后输出结点值。
需要注意的是,该代码仅适用于二叉树,不适用于多叉树或森林。另外,该代码中未进行错误处理,输入非法数据可能会导致程序崩溃。
相关问题
#include <stdlib.h> #include <iostream.h> #include <fstream.h>
#include <stdlib.h>:这是C/C++标准库中的一个头文件,它包含了一些常用的函数和宏定义,用于处理内存分配、随机数生成、字符串转换等操作。
#include <iostream.h>:这是C++标准库中的一个头文件,它包含了输入输出流的定义和相关操作符的重载,用于进行控制台输入输出。
#include <fstream.h>:这是C++标准库中的一个头文件,它包含了文件输入输出流的定义和相关操作符的重载,用于进行文件的读写操作。
这些头文件在C/C++编程中经常使用,可以帮助我们进行各种输入输出操作和文件处理操作。
范例:
```cpp
#include <stdlib.h>
#include <iostream.h>
#include <fstream.h>
int main() {
// 使用stdlib.h中的函数
int num = rand(); // 生成一个随机数
cout << "Random number: " << num << endl;
// 使用iostream.h中的函数
int input;
cout << "Enter a number: ";
cin >> input;
cout << "You entered: " << input << endl;
// 使用fstream.h中的函数
ofstream file("example.txt"); // 创建一个文件对象
file << "This is an example." << endl; // 写入文件
file.close(); // 关闭文件
return 0;
}
```
#include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 typedef int ElemType; typedef struct
这段代码是C语言中的头文件引用和一些定义的示例。其中,`#include <stdio.h>`和`#include <stdlib.h>`是用来引入标准库函数的头文件。`stdio.h`包含了输入输出相关的函数,如`printf`和`scanf`;`stdlib.h`包含了一些常用的函数,如内存分配函数`malloc`和随机数生成函数`rand`。
`#define MAXSIZE 100`是一个宏定义,用来定义一个常量`MAXSIZE`,它的值为100。
`typedef int ElemType;`是用来给`int`类型起一个别名`ElemType`,方便在代码中使用。
至于代码中的结构体部分,由于你没有提供完整的代码,所以无法给出具体的解释。但一般来说,结构体用于定义一种自定义的数据类型,可以包含多个不同类型的成员变量。
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)