已知二叉树的先序遍历序列和中序遍历序列,求层次遍历 跪求大牛!(C语言)

2024-11-15 17:34:17
推荐回答(1个)
回答(1):

typedef struct Tree_node{
    int data;
    struct Tree_node *lchild;
    struct Tree_node *rchild;
}NODE,*LINK;
//按层遍历
void LevelShow(LINK root)
{
    LINK queue[N+1],p;
    int front=0,rear=0;  //队列首尾指针
    if(root==NULL)
    {
        printf("树不存在,请创建!\n");
        return;
    }
    if(root)   //若树存在
    {
        queue[rear++]=root;                   //根结点进队
        while(front!=rear)
        {
            p=queue[front++];                 //出队
            printf("%-2d  ",p->data);
            if(p->lchild) queue[rear++]=p->lchild;       //若左子树不为空,则进队
            if(p->rchild) queue[rear++]=p->rchild;       //若右子树不为空,则进队
        }
    }
    putchar('\n');
    return;
}

用队列实现。上面是我以前写的,你改下吧!