引自
#include<iostream>
using namespace std;
//定义节点
struct TreeNode{
char val;
TreeNode *left;
TreeNode *right;
TreeNode(char x): val(x), left(NULL), right(NULL) {}
};
//按照前序顺序建立二叉树
void createBiTree(TreeNode* &T) { //目的是让传递进来的指针发生改变
char c;
cin >> c;
if('#' == c) //当遇到#时,令树的根节点为NULL,从而结束该分支的递归
T = NULL;
else
{
T = new TreeNode(c);
createBiTree(T->left);
createBiTree(T->right);
}
}
//前序遍历二叉树并打印
void preTraverse(TreeNode* T)
{
if(T)
{
cout<<T->val<<" ";
preTraverse(T->left);
preTraverse(T->right);
}
}
//中序遍历二叉树并打印
void midTraverse(TreeNode* T)
{
if(T)
{
midTraverse(T->left);
cout<<T->val<<" ";
midTraverse(T->right);
}
}
//后续遍历二叉树并打印
void postTraverse(TreeNode* T)
{
if(T)
{
postTraverse(T->left);
postTraverse(T->right);
cout<<T->val<<" ";
}
}
int main()
{
TreeNode *T; //声明一个指向二叉树根节点的指针
createBiTree(T);
cout<<"二叉树创建完成!"<<endl;
cout<<"前序遍历二叉树:"<<endl;
preTraverse(T);
cout<<endl;
cout<<"中序遍历二叉树:"<<endl;
midTraverse(T);
cout<<endl;
cout<<"后序遍历二叉树:"<<endl;
postTraverse(T);
return 0;
}