递归的方法遍历
结构体
typedef struct Node
{
char data;
struct Node* LChild;
struct Node* RChild;
}BiTNode,*PBiTNode;
//先序遍历
void PreOrder(BiTNode* root)
{
if(root != NULL)
{
cout<<root->data<<endl;
PreOrder(root->LChild);
PreOrder(root->RChild);
}
}
//中序遍历
void PreOrder(BiTNode* root)
{
if(root != NULL)
{
PreOrder(root->LChild);
cout<<root->data<<endl;
PreOrder(root->RChild);
}
}
//后序遍历
void PreOrder(BiTNode* root)
{
if(root != NULL)
{
PreOrder(root->LChild);
PreOrder(root->RChild);
cout<<root->data<<endl;
}
}
层次性遍历 (队列)
//先序
void pre_layer_traver(PBiTNode bt)
{
queue<PBiTNode> q;
PBiTNode p=bt;
if(p!=NULL) q.push(p);
while(!q.empty())
{
p=q.front();
q.pop();
cout<<p->data<<endl;
if(p->LChild!=NULL) q.push(p->LChild);
if(p->RChild!=NULL) q.push(p->RChild);
}
}
//中序
void in_layer_traver(PBiTNode bt)
{
queue<PBiTNode> q;
PBiTNode p=bt;
if(p!=NULL) q.push(p);
while(!q.empty())
{
p=q.front();
q.pop();
if(p->LChild!=NULL) q.push(p->LChild);
cout<<p->data<<endl;
if(p->RChild!=NULL) q.push(p->RChild);
}
}
//后序
void post_layer_traver(PBiTNode bt)
{
queue<PBiTNode> q;
PBiTNode p=bt;
if(p!=NULL) q.push(p);
while(!q.empty())
{
p=q.front();
q.pop();
if(p->LChild!=NULL) q.push(p->LChild);
cout<<p->data<<endl;
if(p->RChild!=NULL) q.push(p->RChild);
}
}