注册 登录
编程论坛 数据结构与算法

一个二叉树遍历的程序,编译无误可以运行,但输入数据后就崩了,求指点,谢了!

Redeyes 发布于 2016-12-21 21:56, 1689 次点击
代码如下:
程序代码:
#include<stdio.h>
#include<malloc.h>
#define MAX 20
typedef struct BTNode
{
    char data;
    struct BTNode*lchild; //定义左子树
    struct BTNode*rchild; //定义右子树
} *BiTree;
typedef struct
{
    BiTree data[MAX];
    int front,rear;
}SqQueue;

void createBiTree(BiTree *t)
{
    char s;
    BiTree q;
    printf("\nplease input data:");
    s=getchar();
    getchar();
    if(s=='#')
    {
        *t=NULL;
        return;
    }
    q=(BiTree)malloc(sizeof(struct BTNode));
    if(q=NULL)
    {
    printf("Memory alloc failure!");
    exit(0);
    }
    q->data=s;
    *t=q;
    createBiTree(&q->lchild);   
    createBiTree(&q->rchild);   
}

void RPreorder(BiTree p)
{
    BiTree stack[MAX],q;
    int top=0,i;
    for(i=0;i<MAX;i++) stack[i]=NULL;
    q=p;
    while(q!=NULL)
    {
        printf("%c",q->data);
        if(q->rchild!=NULL) (p->rchild);
        if(q->lchild!=NULL);
        else if(top>0) q=stack[--top];
        else q=NULL;
    }
}
int main()
{
    BiTree t=NULL,copyt=NULL;
    int select;
    do
    {
        printf("请依次输入结点序列:\n");
        createBiTree(&t);
        if(t!=NULL)
            printf("二叉树创建成功!\n");
        else
            printf("二叉树未创建成功!\n");
        break;
        printf("\n先序遍历的非递归:");
        RPreorder(t);
    }
    while(select);
    return 0;
}

编译没错,但输入数据点击运行后就崩溃,不知该怎么办,谢谢各位了!
1 回复
#2
azzbcc2016-12-22 09:54
if(q==NULL)
1