二叉树遍历问题_二叉树遍历问题,求教,为什么没有输出???

原问题:二叉树遍历问题,求教,为什么没有输出???
分类:编程开发 > 最后更新时间:【2017-04-21 12:39:45】
问题补充:

#include<stdio.h>

#include<stdlib.h>

//#include<iostream>

typedef char elemType;

typedef struct node

{

elemType data;

struct node *lchild;

struct node *rchild;

} BTNode;

void creatTree(BTNode *T)

{

char ch;

if((ch=getchar())=='#')

T=NULL;

else

{

T=(BTNode *)malloc(sizeof(BTNode));

T->data=ch;

creatTree(T->lchild);

creatTree(T->rchild);

}

printf("0\n");

}

void InOrder(BTNode *b)

{

if(b!=NULL)

{

InOrder(b->lchild);

//cout<<b->data<<" ";

// elemType a=b->data;

printf("%c ",b->data);

// printf("2");

InOrder(b->rchild);

}

}

int main()

{

BTNode *Tree;

creatTree(Tree);

InOrder(Tree);

return 0;

}

最佳答案

你对指针及参数的概念有问题.

BTNode *Tree;

creatTree(Tree);

在你的creatTree函数中,Tree值是不会改变的,所以你再用

InOrder(Tree); //这个Tree是个随机地址

正确的:

#include<stdio.h>
#include<stdlib.h>
//#include<iostream>
typedef char elemType;
typedef struct node
{
elemType data;
struct node *lchild;
struct node *rchild;
} BTNode;
void creatTree(BTNode **T)
{
char ch;
if((ch = getchar()) == '#')
*T = NULL;
else
{
*T = (BTNode *)malloc(sizeof(BTNode));
(*T)->data = ch;
creatTree(&((*T)->lchild));
creatTree(&((*T)->rchild));
}
printf("0\n");
}
void InOrder(BTNode *b)
{
if(b != NULL)
{
InOrder(b->lchild);
//cout<<b->data<<" ";
// elemType a=b->data;
printf("%c ", b->data);
// printf("2");
InOrder(b->rchild);
}
}
int main()
{
BTNode *Tree;
creatTree(&Tree);
InOrder(Tree);
return 0;
}


追问:
大神牛逼了
追问:
大神能解释一下这个吗**T
  • 追答:
    指向指针的指针,也就是二维指针你的creatTree必须改变Tree指针的值,所以要用二维指针的
    最佳答案由网友    提供
  • 公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
    17

    分享到:

    其他回答

    暂无其它回答!

      推荐