前序遍历二叉树,程序有问题

论坛 期权论坛 期权     
木缚微   2018-4-26 14:06   3789   1
请问问题在哪
#include
using namespace std;
struct node{
    char data;
    node *lchild;
    node *rchild;
};


void creattree(node *T){
    char c;
    cin>>c;

    if(c=='#'){
        T=NULL;
    }
    else{
...请问问题在哪
#include
using namespace std;
struct node{
    char data;
    node *lchild;
    node *rchild;
};

void creattree(node *T){
    char c;
    cin>>c;

    if(c=='#'){
        T=NULL;
    }
    else{
        T=new node;
        T->data=c;
        creattree(T->lchild);
        creattree(T->rchild);
    }
}

void preTraverse(node *T)
{
    if(T)
    {
        cout
分享到 :
0 人收藏

1 个回复

倒序浏览
2#
Soucula  2级吧友 | 2018-4-30 01:48:53 发帖IP地址来自
创建二叉树函数需要修改,在函数中你试图修改指针T的值,此时你的形参为指针T这是一个传值操作,需要改为传址操作,将node *T修改为node **T,具体如下:
void creattree(node **T){
char c;
cin>>c;

if(c=='#'){
*T=NULL;
}
else{
*T=new node;
*T->data=c;
creattree(&(*T->lchild));
creattree(&(*T->rchild));
}
}
main函数中调用改为如下:
int main()
{
node *T= NULL;
creattree(&T);
preTraverse(T);
return 0;
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP