1.前序遍历
template<typename DataType>
void BiTree<DataType>::PreOrder(BiNode<DataType>*bt)
{
if(bt==nullptr)return;
else{
cout<<bt->data<<"\t";
PreOrder(bt->lchild);
PreOrder(bt->rchild);
}
}
2.中序遍历
PreOrder(bt->lchild);
cout<<bt->data<<"\t";
PreOrder(bt->rchild);
3.后序遍历
PreOrder(bt->lchild);
PreOrder(bt->rchild);
cout<<bt->data<<"\t";
4.层序遍历
template<typename DataType>
void BiTree<DataType>::LevelOrder()
{
BiNode<DataType>*Q[100],*q=nullptr;
int front=-1,rear=-1;
if(root==nullptr)return;
Q[++rear]=root;
while(front!=rear)
{
q=Q[++front];
cout<<q->data<<"\t";
if(q->lchild!=nullptr) Q[++rear]=q->lchild;
if(q->rchild!=nullptr)
Q[++rear]=q->rchild;
}
}
三叉链表结构定义
template<typename DataType>
struct TriNode
{
DataType data;
TriNode<DataType>*lchild,*rchild,*parent;
};