秦晓彬 发表于 2014-5-20 20:57:01

简单的二叉树的建立和遍历,有点不会,求大神帮忙

#include <stdio.h>
#include <stdlib.h>
typedef struct btnode
{
char val ;
struct btnode *lchild , *rchild;
}BTNODE;
BTNODE* bt_create(BTNODE *p)
{
char ch ;
ch=getchar();
rewind(stdin) ;
BTNODE *q , *head;
q=p;
if(NULL==p)
{

}
else
{
q=(BTNOBE *)malloc(sizeof(BTNODE));
q->val=ch ; root=q;
bt_create(p->lchild);
   bt_create(p->rchild);
}
return head ;
}
visit(char val, int level)
{
printf("%c是第%d层\n" , val ,level);
}
pereder(BTNODE *p , int level)
{
if(NULL==p)
{
printf("这是一个空的二叉树.");
}
else
{
visit(p->val ,level);
pereder(p->lchild ,level+1);
pereder(p->rchild ,levle+1);
}
}
int main ()
{
int level=1;
BTNODE *head;
head =bt_create(NULL);
pereder(head ,level) ;
return main ;
}

求大神帮忙。感激不尽

HHR 发表于 2014-5-20 21:08:06

#include<stdio.h>
#include<stdlib.h>

typedef int datatype;

typedef struct BiTNode
{
        datatype data;
        struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;

// 二叉链表--排序树
void Creat( BiTree &bt )// 引用
{
        datatype x;

        scanf("%d", &x );
        if( x == 0 )
        {
                bt = NULL;
        }
        else
        {
                bt = ( BiTree )malloc( sizeof( BiTNode ) );
                bt ->data = x;
                Creat( bt ->lchild );
                Creat( bt ->rchild );
        }
}

void Visit( BiTree bt )
{
        printf("%d", bt ->data );
}

void PreOrder( BiTree bt )
{
        if( bt == NULL )
        {
                return ;
        }
        Visit( bt );
        PreOrder( bt ->lchild );
        PreOrder( bt ->rchild );
}

int main( void )
{
        BiTree bt = NULL;

        Creat( bt );
        PreOrder( bt );
        puts("");
        return 0;
}
额,这个是我的代码。。

秦晓彬 发表于 2014-5-20 21:09:14

if(NULL==p)
{
   
}
这里写错了
应该是
if('#' ==ch)
{
q=NULL ;
}

冬天不冷 发表于 2014-5-20 22:05:55

(1)if(NULL==p)
{

}
这里有问题
(2)BTNODE* bt_create(BTNODE *p)函数传址有问题
bt_create(p->lchild);
   bt_create(p->rchild);
这两个地方 将(p->lchild)传入是不能对地址本身修改的,即p->lchild是无法被改为NULL,这里传址用二级地址或者引用就可以了教程 上就是用的二级地址

zhangliaocandy 发表于 2014-6-11 20:00:35

冬天不冷 发表于 2014-5-20 22:05 static/image/common/back.gif
(1)if(NULL==p)
{



对二级指针不是很懂,我也一直被这个弄晕,,求详细讲解

黄志伟 发表于 2014-10-13 12:11:46


谁能告诉我小甲鱼的数据第43讲为什么不能下载
页: [1]
查看完整版本: 简单的二叉树的建立和遍历,有点不会,求大神帮忙