简单的二叉树的建立和遍历,有点不会,求大神帮忙
#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 ;
}
求大神帮忙。感激不尽
#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;
}
额,这个是我的代码。。 if(NULL==p)
{
}
这里写错了
应该是
if('#' ==ch)
{
q=NULL ;
}
(1)if(NULL==p)
{
}
这里有问题
(2)BTNODE* bt_create(BTNODE *p)函数传址有问题
bt_create(p->lchild);
bt_create(p->rchild);
这两个地方 将(p->lchild)传入是不能对地址本身修改的,即p->lchild是无法被改为NULL,这里传址用二级地址或者引用就可以了教程 上就是用的二级地址 冬天不冷 发表于 2014-5-20 22:05 static/image/common/back.gif
(1)if(NULL==p)
{
对二级指针不是很懂,我也一直被这个弄晕,,求详细讲解
谁能告诉我小甲鱼的数据第43讲为什么不能下载
页:
[1]