链式二叉树:
遍历:
- 前序
- 中序
- 后序
下面是具体实现:
1.前序遍历:
void PreTraverseLTree(struct LTNode *pT)
{
if(pT!=NULL)
{
cout<<pT->data<<'\t';
if(pT->pLchild!=NULL)
PreTraverseLTree(pT->pLchild);
if(pT->pRchild !=NULL)
PreTraverseLTree(pT->pRchild);
}
}
2.中序遍历:
void InTraverseLTree(struct LTNode *pT)
{
if(pT!=NULL)
{
if(pT->pLchild!=NULL)
InTraverseLTree(pT->pLchild);
cout<<pT->data<<'\t';
if(pT->pRchild !=NULL)
InTraverseLTree(pT->pRchild);
}
}
3.后序遍历:
void PostTraverseLTree(struct LTNode *pT)
{
if(pT!=NULL)
{
if(pT->pLchild!=NULL)
PostTraverseLTree(pT->pLchild);
if(pT->pRchild !=NULL)
PostTraverseLTree(pT->pRchild);
cout<<pT->data<<'\t';
}
}
------》源代码:
#include<iostream>
#include<malloc.h>
using namespace std;
//结构描述:
struct LTNode
{
char data;
struct LTNode *pLchild;
struct LTNode *pRchild;
};
//初始化:
struct LTNode *CreatLTree()
{
struct LTNode *pA=(struct LTNode *)malloc(sizeof(struct LTNode ));
struct LTNode *pB=(struct LTNode *)malloc(sizeof(struct LTNode ));
struct LTNode *pC=(struct LTNode *)malloc(sizeof(struct LTNode ));
struct LTNode *pD=(struct LTNode *)malloc(sizeof(struct LTNode ));
struct LTNode *pE=(struct LTNode *)malloc(sizeof(struct LTNode ));
pA->data='A';
pB->data='B';
pC->data='C';
pD->data='D';
pE->data='E';
pA->pLchild =pB;
pA->pRchild=pC;
pB->pLchild=pB->pRchild=NULL;
pC->pLchild=pD;
pC->pRchild=NULL;
pD->pLchild =NULL;
pD->pRchild=pE;
pE->pLchild=pE->pRchild=NULL;
return pA;
};
//1.前序遍历:
void PreTraverseLTree(struct LTNode *pT)
{
if(pT!=NULL)
{
cout<<pT->data<<'\t';
if(pT->pLchild!=NULL)
PreTraverseLTree(pT->pLchild);
if(pT->pRchild !=NULL)
PreTraverseLTree(pT->pRchild);
}
}
//2.中序遍历:
void InTraverseLTree(struct LTNode *pT)
{
if(pT!=NULL)
{
if(pT->pLchild!=NULL)
InTraverseLTree(pT->pLchild);
cout<<pT->data<<'\t';
if(pT->pRchild !=NULL)
InTraverseLTree(pT->pRchild);
}
}
//3.后序遍历:
void PostTraverseLTree(struct LTNode *pT)
{
if(pT!=NULL)
{
if(pT->pLchild!=NULL)
PostTraverseLTree(pT->pLchild);
if(pT->pRchild !=NULL)
PostTraverseLTree(pT->pRchild);
cout<<pT->data<<'\t';
}
}
int main()
{
struct LTNode *pT=CreatLTree();
cout<<"前序遍历:"<<endl;
PreTraverseLTree(pT);
cout<<endl;
cout<<"中序遍历:"<<endl;
InTraverseLTree(pT);
cout<<endl;
cout<<"后序遍历:"<<endl;
PostTraverseLTree(pT);
cout<<endl;
return 0;
}
树中最常见的结构就是二叉树结构了,因为其独特的结构和存储方式在今后很多
的算法设计中都有涉及,应用范围也很广。这里给大家介绍的是二叉树最基础的链式遍历,在今后还会有很多拓展和应用,那些是相对比较复杂的内容。还有在树的遍历时,我们一般采用递归算法(虽然效率低,但设计简洁啊!)。