鱼C论坛

 找回密码
 立即注册
查看: 3777|回复: 5

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

[复制链接]
发表于 2014-5-20 20:57:01 | 显示全部楼层 |阅读模式
10鱼币
#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 ;
}

求大神帮忙。感激不尽

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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;
}
额,这个是我的代码。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-5-20 21:09:14 | 显示全部楼层
if(NULL==p)
{
   
}
这里写错了
应该是
if('#' ==ch)
{
q=NULL ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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,这里传址用二级地址或者引用就可以了  教程 上就是用的二级地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-11 20:00:35 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-13 12:11:46 | 显示全部楼层

谁能告诉我小甲鱼的数据第43讲为什么不能下载
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 07:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表