| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3157 人关注过本帖
标题:关于二叉树建立(递归)不明白啊。
取消只看楼主 加入收藏
ctw888
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-5-22
收藏
 问题点数:0 回复次数:6 
关于二叉树建立(递归)不明白啊。
假设虚结点输入时以空格字符表示,相应的构造算法为:
     void CreateBinTree (BinTree *T)
      { //构造二叉链表。T是指向根指针的指针,故修改*T就修改了实参(根指针)本身
        char ch;
        if((ch=getchar())=='') *T=NULL; //读人空格,将相应指针置空
        else{ //读人非空格
              *T=(BinTNode *)malloc(sizeof(BinTNode)); //生成结点
              (*T)->data=ch;
              CreateBinTree(&(*T)->lchild); //构造左子树
              CreateBinTree(&(*T)->rchild); //构造右子树
             }
      }


疑问:
1、如果读入的是空,执行*T=NULL,其作是干什么?
2、如果读入的不是空,则分配一个空间,生成结点,然后赋值。而构造左、右子树的过程是什么呢?就是是栈的操作是怎么样的?
搜索更多相关主题的帖子: 二叉树 递归 
2008-11-27 09:12
ctw888
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-5-22
收藏
得分:0 
请教再解。
2008-11-27 10:11
ctw888
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-5-22
收藏
得分:0 
这个是非递归吧。递归的思想如何理解
2008-11-27 11:00
ctw888
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-5-22
收藏
得分:0 
假设虚结点输入时以空格字符表示,相应的构造算法为:
     void CreateBinTree (BinTree *T)
      { //构造二叉链表。T是指向根指针的指针,故修改*T就修改了实参(根指针)本身
        char ch;
        if((ch=getchar())=='') *T=NULL; //读人空格,将相应指针置空
        else{ //读人非空格
              *T=(BinTNode *)malloc(sizeof(BinTNode)); //生成结点
              (*T)->data=ch;
              CreateBinTree(&(*T)->lchild); //构造左子树
              CreateBinTree(&(*T)->rchild); //构造右子树
             }
      }
在这个问题中,CreateBinTree(&(*T)->rchild); //构造右子树。什么时候执行。
我理解是从程序开始先构造左子做,一直构造到空,那么怎么转到右子树上?
2008-11-27 12:14
ctw888
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-5-22
收藏
得分:0 
先序访问是明白的。但递归不明白。
2008-11-27 15:51
ctw888
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-5-22
收藏
得分:0 
如果getchar()为空了,令T=NULL,就不执行else语句了。也就是程序结束了。

程序是怎么转回来执行CreateBinTree(&(*T)->rchild); //构造右子树??
2008-11-27 16:07
ctw888
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-5-22
收藏
得分:0 
第14楼还是比较好理解的.像我这样的初学者适用.
2008-12-09 11:39
快速回复:关于二叉树建立(递归)不明白啊。
数据加载中...
 
   



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

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