1.先序遍历:先根节点,再左子树,最后右子树
2.中序遍历:先左子树,再根节点,最后右子树
3.后序遍历:先左子树,再右子树,最后根节点
先序遍历算法
DLR(NODE *root)
{
if(root!=NULL)//先
{
printf("%d",root->data);
DLR(root->lchild);//递归遍历左子树
DLR(root->rchild);//递归调用右子树
}
if(root!=NULL)//中
{
DLR(root->lchild);//递归遍历左子树
printf("%d",root->data);
DLR(root->rchild);//递归调用右子树
}
if(root!=NULL)//后
{
DLR(root->lchild);//递归遍历左子树
DLR(root->rchild);//递归调用右子树
printf("%d",root->data);
}
}
//中序遍历
typedef struct BiNode
{
int data;
struct BiNode *lchild,*rchild;
}BiNode,*BiTree;
void inOrder(BiNode *root)
{
if(root!=NULL)
{
inOrder(root->lchild);
printf("%d",root->data);
inOrder(root->rchild);
}
return;
}
void main()
{
BiNode t1,t2,t3,t4,t5;
memset(&t1,0,sizeof(BiNode));
memset(&t2,0,sizeof(BiNode));
memset(&t3,0,sizeof(BiNode));
memset(&t4,0,sizeof(BiNode));
memset(&t5,0,sizeof(BiNode));
t1.date=1;t2.data=2;t3.data=3;t4.data=4;t5.data=5;
t1.lchild=&t2;
t1.rchild=&t3;
t2.lchild=&t4;
t3.lchild=&t5;
inOrder(&t1);
}