二叉树前序遍历时程序崩溃
#include <stdio.h>#include <stdlib.h>typedef struct bitnode{ int data; struct bitnode *lchild,*rchild; }bitnode; void createbitree(bitnode *t){ //前序遍历创建二叉树 char ch; ch = getchar(); if(ch == '.') t = NULL; else{ t = (bitnode *)malloc(sizeof(bitnode)); t->data = ch; //生成根结点; createbitree(t->lchild); //构造左子树; createbitree(t->rchild); //构造右子树; } } void preorder(bitnode *t){ //前序遍历显示二叉树 if (t == NULL) return; printf("%c",t->data); preorder(t->lchild); preorder(t->rchild); } int main(int argc, char *argv[]){ bitnode *t; createbitree(t); printf("二叉树已建立\n"); //这一步能正常显示。 preorder(t); //。。。。。出问题的代码。。。。。。。 system("PAUSE"); return 0;}
void createbitree(bitnode **t){ //前序遍历创建二叉树 char ch; ch = getchar(); if(ch == '.') *t = NULL; else{ *t = (bitnode *)malloc(sizeof(bitnode)); (*t)->data = ch; //生成根结点; createbitree(&(*t)->lchild); //构造左子树; createbitree(&(*t)->rchild); //构造右子树; }}
[解决办法]
顶楼上。。。楼主的这样的做法只是简单的值传递!要用二维指针,进行地址传递!