按先序遍历序列建立一个二叉树的二叉链表,并按先序遍历、中序遍历、后序遍历将其输出。
#include<iostream>
using namespace std;
template <class T>
struct BTNode{
T data;
BTNode <T> * Lchild,*Rchild;
};
template <class T>
void createBinTree(BTNode<T> * & root)
{
BTNode<T>* p = root;
BTNode<T>* k;
T nodeValue;
cin>>nodeValue;
if(nodeValue=='#') {root=NULL;}
else {root=new BTNode<T>();root->data=nodeValue;createBinTree(root->Lchild);createBinTree(root->Rchild);}
}
template <class T>
void preOrder( BTNode<T> * & p)
{ if(p)
{cout<<p->data<<" ";
preOrder(p->Lchild);
preOrder(p->Rchild);}
}
template <class T>
void inOrder(BTNode<T> * & p)
{if(p)
{inOrder(p->Lchild);
cout<<p->data<<" ";
inOrder(p->Rchild);}
}
template <class T>
void levelOrder(BTNode<T> *& p)
{ if(p)
{levelOrder(p->Lchild);
levelOrder(p->Rchild);
cout<<p->data<<" ";}
}
int main()
{
BTNode <char>*rootNode=NULL;
createBinTree(rootNode);
cout<<"前序遍历结果:";preOrder(rootNode);cout<<endl;
cout<<"中序遍历结果:";inOrder(rootNode);cout<<endl;
cout<<"后序遍历结果:";levelOrder(rootNode);cout<<endl;
}