标题:二叉树的前序创建问题的求助
只看楼主
heliujin
Rank: 2
等 级:论坛游民
帖 子:249
专家分:14
注 册:2006-3-14
结帖率:100%
 问题点数:0 回复次数:12 
二叉树的前序创建问题的求助
我的代码如下:(我估计我是逻辑上的错误,请大家指教啊)(用C++写的)
#include"iostream.h"
#include"stdlib.h"
#include"stdio.h"
struct btree
{
    char c;
    btree *left;
    btree *right;
};

btree *b=NULL;

void create(btree *p)
{
    if(p==NULL)
    {
        char m;

        cout<<"输入一个字符:";

        cin>>m;
 
        cout<<endl;

        if(m!='#')
        {

        p=new (btree);

        p->c=m;

        p->left=NULL;

        p->right=NULL;
        
        create(p->left);

        create(p->right);
        }
    }


}

void print(btree *p)
{
    if(p!=NULL)
    {
        cout<<p->c<<" ";

        print(p->left);

        print(p->right);
     
    }
}

int main()
{
    create(b);

    print(b);

    return 0;
}
搜索更多相关主题的帖子: 二叉树 btree NULL 
2008-03-08 07:34
heliujin
Rank: 2
等 级:论坛游民
帖 子:249
专家分:14
注 册:2006-3-14
得分:0 
自己顶一个吧 大家帮帮我吧。
2008-03-08 09:23
heliujin
Rank: 2
等 级:论坛游民
帖 子:249
专家分:14
注 册:2006-3-14
得分:0 
怎么还没有人呢  我自己再顶一个
2008-03-08 14:50
heliujin
Rank: 2
等 级:论坛游民
帖 子:249
专家分:14
注 册:2006-3-14
得分:0 
磕头了
不能吧  我再顶  帮帮我吧 小弟刚开始学 大家指点指点吧 磕头了
2008-03-08 15:50
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
树的创建是用到递归的你的问题出现在没有说明树的度。。。而且要递归 问题create(p->left); create(p->right);在这。。。没有结束了

学习需要安静。。海盗要重新来过。。
2008-03-08 21:36
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1026
专家分:177
注 册:2007-5-10
得分:0 
我想你应该在create函数的参数上使用引用,否则print的将永远是“空树”。
2008-03-08 22:10
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
#include"iostream.h"
#include"stdlib.h"
#include"stdio.h"
#include"malloc.h"
struct btree
{
    char c;
    btree *left;
    btree *right;
};

btree b;
int b1;
void create(btree &p,int a)
{   
    printf("你已经到了%d层",b1-a);
    if(a!=0)
    {
        char m;
        cout<<"输入一个字符:";
        cin>>m;
        cout<<endl;      
        p.left=(struct btree*)malloc(sizeof(struct btree));
          p.right=(struct btree*)malloc(sizeof(struct btree));
         p.c=m;
        if(a-1!=0)
        {
           create(*p.left,a-1);
           create(*p.right,a-1);
        }  
    }
}

void print(btree &p,int a)
{
    if(a!=0)
    {   printf("你已经到了%d层\t%c\n",b1-a,p.c);
        //cout<<p.c<<" ";
        if(a-1!=0)
        {
            print(*p.left,a-1);

            print(*p.right,a-1);
        }
     
    }
}


int main()
{   int a;
    cout<<"请输入树的度:"<<endl;
    cin>>a;
    b1=a;
    create(b,a);
    print(b,a);
    return 0;
}

[[it] 本帖最后由 sunkaidong 于 2008-3-9 09:14 编辑 [/it]]

学习需要安静。。海盗要重新来过。。
2008-03-08 23:01
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
写的很粗糙。。。不好意思。。。。自己可以看看啊。。用的是引用.....

[[it] 本帖最后由 sunkaidong 于 2008-3-9 10:53 编辑 [/it]]

学习需要安静。。海盗要重新来过。。
2008-03-08 23:13
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
#include"iostream.h"
#include"stdlib.h"
#include"stdio.h"
#include"malloc.h"
struct btree
{
    char c;
    btree *left;
    btree *right;
};

btree* b=NULL;
int b1;
void create(btree *p,int a)
{   
    printf("你已经到了%d层",b1-a);
    if(a!=0)
    {
        char m;
        cout<<"输入一个字符:";
        cin>>m;
        cout<<endl;      
          p->left=(struct btree*)malloc(sizeof(struct btree));
          p->right=(struct btree*)malloc(sizeof(struct btree));
         p->c=m;
        if(a-1!=0)
        {
           create(p->left,a-1);
           create(p->right,a-1);
        }  
    }
}

void print(btree *p,int a)
{
    if(a!=0)
    {   printf("你已经到了%d层\t%c\n",b1-a,p->c);
        //cout<<p.c<<" ";
        if(a-1!=0)
        {
            print(p->left,a-1);

            print(p->right,a-1);
        }
     
    }
}


int main()
{   int a;
    cout<<"请输入树的度:"<<endl;
    cin>>a;
    b1=a;
    b=(struct btree*)malloc(sizeof(struct btree));
    create(b,a);
    print(b,a);
    return 0;
}

学习需要安静。。海盗要重新来过。。
2008-03-09 10:23
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
上面是指针做的...前面有一个是引用做的

学习需要安静。。海盗要重新来过。。
2008-03-09 10:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-202457-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.353086 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved