#include <iostream>
#include <iomanip>
using namespace std;
struct BinaryTreeNode
{
char data;
BinaryTreeNode* LeftChild;
BinaryTreeNode* RightChild;
};
BinaryTreeNode* buildBinaryTree();
void Preorder(BinaryTreeNode* BT);
void Inorder(BinaryTreeNode* BT);
void Postorder(BinaryTreeNode* BT);
int main()
{
BinaryTreeNode* BT = buildBinaryTree();
cout<<setiosflags(ios::left)<<setw(10)<<"Preorder";
Preorder(BT);
cout<<endl;
cout<<setiosflags(ios::left)<<setw(10)<<"Inorder";
Inorder(BT);
cout<<endl;
cout<<setiosflags(ios::left)<<setw(10)<<"Postorder";
Postorder(BT);
cout<<endl;
system("pause");
return 0;
}
BinaryTreeNode* buildBinaryTree()
{
char data;
BinaryTreeNode* BT;
cin>>data;
if ('0' == data)
BT = NULL;
else
{
BT = new BinaryTreeNode;
BT->data = data;
BT->LeftChild = buildBinaryTree();
BT->RightChild = buildBinaryTree();
}
return BT;
}
void Preorder(BinaryTreeNode* BT)
{
if (NULL == BT)
return;
else
{
cout<<BT->data<<" ";
Preorder(BT->LeftChild);
Preorder(BT->RightChild);
}
}
void Inorder(BinaryTreeNode* BT)
{
if (NULL == BT)
return;
else
{
Inorder(BT->LeftChild);
cout<<BT->data<<" ";
Inorder(BT->RightChild);
}
}
void Postorder(BinaryTreeNode* BT)
{
if (NULL == BT)
return;
else
{
Postorder(BT->LeftChild);
Postorder(BT->RightChild);
cout<<BT->data<<" ";
}
}
假设如下一棵二叉树。采用先序建立。
建立树的输入格式是:-+a00*b00-c00d00/e00f00