| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 634 人关注过本帖
标题:二叉树建立的问题!
只看楼主 加入收藏
王一南
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2010-11-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
二叉树建立的问题!

二叉树的建立,书上是这么给的,么返回值,我想要返回值,行吗?
typedef struct BiTNode
{
   char data;
   struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

void CreatBiTree(BiTree *T)
{
  char ch;
  getchar()
  if(ch=='#')
    *T=NULL;
  else
  {
        *T=(BiTree)malloc(sizeof(BiTNode)) ;
        *T->data=ch;
        CreatBiTree(&((*T)->lchild));
        CreatBiTree(&((*T)->rchild));
   }
}

我是这么写的,不知道行不?这个返回值行吗?
typedef struct BiTNode
{
   char data;
   struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

void CreatBiTree(BiTree root)
{
  Bitree p;
  p=root;
  char ch;
  getchar()
  if(ch=='#')
    *T=NULL;
  else
  {
       p=(BiTree)malloc(sizeof(BiTNode)) ;
       p->data=ch;
        CreatBiTree(p->lchild);
        CreatBiTree(p->rchild);
        return(root);
   }

}
搜索更多相关主题的帖子: 二叉树 
2011-05-17 13:12
王一南
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2010-11-29
收藏
得分:0 
烦劳各位高手了
2011-05-17 16:15
三月的雪
Rank: 2
等 级:论坛游民
帖 子:18
专家分:35
注 册:2011-4-14
收藏
得分:7 
可以,但是有返回值那个create函数不应该声明成void。
请看下我的帖子https://bbs.bccn.net/thread-339502-1-1.html

朝花夕拾
2011-05-17 16:31
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:7 
向楼上看
2011-05-17 19:22
王一南
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2010-11-29
收藏
得分:0 
回复 3楼 三月的雪
那那个返回值return 是放在那个大括号里,还是放在小括号了呢?
  如果放在小括号里
 else
  {
       p=(BiTree)malloc(sizeof(BiTNode)) ;
       p->data=ch;
        CreatBiTree(p->lchild);
        CreatBiTree(p->rchild);
        return(root);
   }

我感觉我不是很明白是怎么递归的,每次递归的返回值是什么呢?
  麻烦您了
2011-05-19 10:10
王一南
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2010-11-29
收藏
得分:0 
回复 3楼 三月的雪
BiTreeNode *createBiTree()
  你这个定义函数为什么么有参数呢?
 如果这样定义可以吗?
BiTreeNode *createBiTree(Bitree root)
 麻烦您了

2011-05-19 10:12
三月的雪
Rank: 2
等 级:论坛游民
帖 子:18
专家分:35
注 册:2011-4-14
收藏
得分:0 
回复 6楼 王一南
这种带返回参数的情况传入参数可以带,但是没有任何用处,所以还是去掉吧。另外每次递归返回的是当前子树根节点的地址,是个一级指针。

朝花夕拾
2011-05-22 16:08
wengpingzhan
Rank: 2
等 级:论坛游民
帖 子:9
专家分:13
注 册:2011-6-12
收藏
得分:0 
typedef struct BiTNode
{
   char data;
   struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

BiTree CreatBiTree()
{
  Bitree p;
  char ch;
  getchar();
  if(ch=='#')
    return NULL;
  else
  {
       p=(BiTree)malloc(sizeof(BiTNode)) ;
       p->data=ch;
        p->lchild = CreatBiTree();
        p->rchild = CreatBiTree();
        return(p);
   }
}

这样应该没啥问题了!
2011-06-19 14:53
快速回复:二叉树建立的问题!
数据加载中...
 
   



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

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