二叉树遍历

来源:互联网 发布:蔷薇十字团 知乎 编辑:程序博客网 时间:2024/05/21 19:26
结点:
typedef struct node{
int data;
struct node *lchild;
struct node *rchild;
}Node;


先序遍历(递归):

void prev(Node* root)
{
if(root!=NULL)
{
printf("%d ",root->data);
prev(root->lchild);
prev(root->rchild);
}
}
中序遍历(递归):
void mid(Node* root)
{
if(root!=NULL)
{
mid(root->lchild);
printf("%d ",root->data);
mid(root->rchild);
}
}
后序遍历(递归):
void pro(Node* root)
{
if(root!=NULL)
{
pro(root->lchild);
pro(root->rchild);
printf("%d ",root->data);
}
}



已知先序遍历和后序遍历,求中序遍历:
先序遍历的第一个和后序遍历的最后一个是root
而先序遍历的第二个不是root的lchild就是rchild
如果先序遍历的第二个=后序遍历的倒数第二个,则是root的rchild
如果先序遍历的第二个≠后序遍历的倒数第二个,则是root的lchild
递归下去.
0 0
原创粉丝点击