0.树结构体定义
typedef struct BTNode
{
int data;
struct BTNode *lchild;
struct BTNode *rchild;
}BTNode;
1.先序遍历
void preorder(BTNode *p)
{
if(p)
{
visit(p);
preorder(p->lchild);
preorder(p->rchild);
}
}
2.中序遍历
void inorder(BTNode *p)
{
if(p)
{
inorder(p->lchild);
visit(p);
inorder(p->rchild);
}
}
3.后序遍历
void postorder(BTNode *p)
{
if(p)
{
postorder(p->lchild);
postorder(p->rchild);
visit(p);
}
}
4.小结
以上三种遍历都是深度优先遍历,只是在访问结点的顺序上有所不同,也就是说,每个结点都会被"经过"三次,第一次访问就是先序,第二次访问就是中序,第三次访问就是后序。