结点:
-
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
递归下去。
阅读(345) | 评论(0) | 转发(0) |