二叉树的实现:
描述
要求:
1.采用二叉链表的方式进行存储
2.构造一个二叉树类
实现以下算法:
1.创建二叉树
2.对二叉树进行前序、中序、后序遍历
#include<iostream>
#include<algorithm>
using namespace std;
template <typename T>
struct BiNode
{
T data;
BiNode<T> *lchild,*rchild;
};
template <typename T>
class BiTree
{
private:
BiNode<T> *root;
void PreOrder(BiNode<T> *root);
void InOrder(BiNode<T> *root);
void PostOrder(BiNode<T> *root);
public:
BiTree(){root=Creat();}
void PreOrder(){PreOrder(root);}
void InOrder(){InOrder(root);}
void PostOrder(){PostOrder(root);}
void LevelOrder();
BiNode<T> *Creat();
};
template <typename T>
void BiTree<T>::PreOrder(BiNode<T> *root)
{
if(root==NULL) return;
else
{
cout<<root->data;
PreOrder(root->lchild);
PreOrder(root->rchild);
}
}
template <typename T>
void BiTree<T>::InOrder(BiNode<T> *root)
{
if(root==NULL) return;
InOrder(root->lchild);
cout<<root->data;
InOrder(root->rchild);
}
template <typename T>
void BiTree<T>::PostOrder(BiNode<T> *root)
{
if(root==NULL) return;
PostOrder(root->lchild);
PostOrder(root->rchild);
cout<<root->data;
}
template <typename T>
BiNode<T>*BiTree<T>::Creat()
{
BiNode<T> *root;
char ch;
cin>>ch;
if(ch=='#') root=NULL;
else
{
root=new BiNode<T>;
root->data=ch;
root->lchild=Creat();
root->rchild=Creat();
}
return root;
}
int main()
{
string a;
do
{BiTree<char> ob;
cin>>a;
ob.PreOrder();
cout<<endl;
ob.InOrder();
cout<<endl;
ob.PostOrder();
cout<<endl;
}while (a!="N");
}