通过先序方式创建树,通过简单的递归就可以实现先序,中序,后序遍历。
层次遍历还需要用到队列,当某个节点出队时,它的左右结点要入队(如果有的话)。
#include <iostream>
#include <queue>
using namespace std;
typedef struct Node
{
char data;
struct Node *lchild, *rchild;
}Node;
//通过先序方式创建树,#表示空
/*
A
B C
D E F #
# # # # # #
应输入:ABD##E##CF###
前序遍历:ABDECF
中序遍历:DBEAFC
后序遍历:DEBFCA
层次遍历:ABCDEF
*/
void creatTree(Node* &root)
{
char data;
cin >> data;
if (data == '#')
root = NULL;
else
{
root = new Node;
root->data = data;
creatTree(root-