#include<iostream>
using namespace std;
struct Ertree
{
char name;
Ertree *left;
Ertree *right;
};
void traverse(Ertree *tree, int n);
void CreatTree();
void main()
{
CreatTree();
}
void traverse(Ertree *tree, int n)//遍历节点
{
if (tree == NULL)
{
return;
}
if (n == 1)//先序遍历
{
cout << tree->name << ends;
traverse(tree->left, n);
traverse(tree->right, n);//A F D C B E K J H G
}
else if (n == 2)//中序遍历
{
traverse(tree->left, n);
cout << tree->name << ends;
traverse(tree->right, n);//C D B F E A K H J G
}
else if (n == 3)//后序遍历
{
traverse(tree->left, n);
traverse(tree->right, n);
cout << tree->name << ends;//C B D E F H G J K A
}
}
void CreatTree()//创建节点
{
Ertree treeA = { 'A',NULL,NULL };
Ertree treeB = { 'B',NULL,NULL };
Ertree treeC = { 'C',NULL,NULL };
Ertree treeD = { 'D',NULL,NULL };
Ertree treeE = { 'E',NULL,NULL };
Ertree treeF = { 'F',NULL,NULL };
Ertree treeG = { 'G',NULL,NULL };
Ertree treeH = { 'H',NULL,NULL };
Ertree treeJ = { 'J',NULL,NULL };
Ertree treeK = { 'K',NULL,NULL };
treeA.left = &treeF;
treeA.right = &treeK;
treeF.left = &treeD;
treeF.right = &treeE;
treeD.left = &treeC;
treeD.right = &treeB;
treeK.right = &treeJ;
treeJ.left = &treeH;
treeJ.right = &treeG;
cout << "1:先序遍历 2:中序遍历 3:后序遍历" << endl;
int n;
cin >> n;
traverse(&treeA, n);
}
运行结果: