0.定义
typedef struct BiTNode {
Elemtype data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
1.先序遍历
void PreOrder(BiTree T) {
if(T != NULL) {
visit(T);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
2.中序遍历
void PreOrder(BiTree T) {
if(T != NULL) {
PreOrder(T->lchild);
visit(T);
PreOrder(T->rchild);
}
}
3.后序遍历
void PreOrder(BiTree T) {
if(T != NULL) {
PreOrder(T->lchild);
PreOrder(T->rchild);
visit(T);
}
}
4.递归遍历的应用:求树的深度
int treeDepth(BiTree T) {
if(T != NULL) {
return 0;
}
else {
int l = treeDepth(T->lchild);
int r = treeDepth(T->rchild);
return l > r ? l + 1 : r + 1;
}
}
5.层次遍历
typedef struct LinkNode {
BiTNode *data;
struct LinkNode *next;
}LinkNode;
typedef struct{
LinkNode *front,*rear;
}LinkQueue;
void Level Order(BiTree T) {
InitQueue(Q);
BiTree p;
EnQueue(Q, T);
while(!IsEmpty(Q)) {
DeQueue(Q, p);
visit(p);
if(p->lchild != NULL)
EnQueue(Q, p->lchild);
if(p->rchild != NULL)
EnQueue(Q, p->rchild);
}
}