鱼C论坛

 找回密码
 立即注册
查看: 4465|回复: 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 ;
}

求大神帮忙。感激不尽

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-5-20 21:08:06 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<stdlib.h>

  3. typedef int datatype;

  4. typedef struct BiTNode
  5. {
  6.         datatype data;
  7.         struct BiTNode *lchild, *rchild;
  8. }BiTNode, *BiTree;

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

  13.         scanf("%d", &x );
  14.         if( x == 0 )
  15.         {
  16.                 bt = NULL;
  17.         }
  18.         else
  19.         {
  20.                 bt = ( BiTree )malloc( sizeof( BiTNode ) );
  21.                 bt ->data = x;
  22.                 Creat( bt ->lchild );
  23.                 Creat( bt ->rchild );
  24.         }
  25. }

  26. void Visit( BiTree bt )
  27. {
  28.         printf("%d", bt ->data );
  29. }

  30. void PreOrder( BiTree bt )
  31. {
  32.         if( bt == NULL )
  33.         {
  34.                 return ;
  35.         }
  36.         Visit( bt );
  37.         PreOrder( bt ->lchild );
  38.         PreOrder( bt ->rchild );
  39. }

  40. int main( void )
  41. {
  42.         BiTree bt = NULL;

  43.         Creat( bt );
  44.         PreOrder( bt );
  45.         puts("");
  46.         return 0;
  47. }
复制代码
额,这个是我的代码。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-5-20 21:09:14 | 显示全部楼层
if(NULL==p)
{
   
}
这里写错了
应该是
if('#' ==ch)
{
q=NULL ;
}
小甲鱼最新课程 -> https://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,这里传址用二级地址或者引用就可以了  教程 上就是用的二级地址
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-6-11 20:00:35 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

谁能告诉我小甲鱼的数据第43讲为什么不能下载
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 12:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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