大神求助 二叉树问题
程序代码:
#include <stdio.h> #include <stdlib.h> typedef char ElemType ; typedef struct BiTNode{ ElemType data; struct BiTNode *lchild,*rchild; }BiTNode; //创建一颗二叉树 creatBiTree( BiTNode *T){ char c; scanf("%c",&c); if(' '==c) { T = NULL; } else { T = (BiTNode*) malloc (sizeof(BiTNode)); T->data = c ; creatBiTree(T->lchild); creatBiTree(T->rchild); } } //遍历任务 visit(char c ,int level) { printf("%c is %d 2ã\n",c,level); } //遍历二叉树 preordertraverse(BiTNode *T,int level) { if(T) { visit(T->data,level); preordertraverse( T->lchild, level+1); preordertraverse( T->rchild, level+1); } } int main(void) { int level = 1; BiTNode * T = NULL; creatBiTree(T); preordertraverse( T, level); return 0; }
我将书上二叉树代码的二级指针替换为一级指针,但出现问题,我发现无法打印,希望有大神帮我看下,怎么回事
谢谢
书上代码如下
程序代码:
#include <stdio.h> #include <stdlib.h> typedef char ElemType ; typedef struct BiTNode{ ElemType data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; //创建一颗二叉树 creatBiTree(BiTree *T){ char c; scanf("%c",&c); if(' '==c) { *T = NULL; } else { *T = (BiTNode*) malloc (sizeof(BiTNode)); (*T)->data = c ; creatBiTree(&(*T)->lchild); creatBiTree(&(*T)->rchild); } } //遍历二叉树 preordertraverse(BiTree T,int level) { if(T) { visit(T->data,level); preordertraverse( T->lchild, level+1); preordertraverse( T->rchild, level+1); } } //遍历任务 visit(char c ,int level) { printf("%c is %d 层\n",c,level); } int main(void) { int level = 1; BiTree T = NULL; creatBiTree(&T); preordertraverse( T, level); return 0; }