一个二叉树遍历的程序,编译无误可以运行,但输入数据后就崩了,求指点,谢了!
代码如下:程序代码:
#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; }
编译没错,但输入数据点击运行后就崩溃,不知该怎么办,谢谢各位了!