| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 962 人关注过本帖
标题:二叉树的建立
只看楼主 加入收藏
miszhou
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-12-8
收藏
 问题点数:0 回复次数:2 
二叉树的建立
假设虚结点输入时以空格字符表示,相应的构造算法为:
     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)什么时候构造左子树,左子树的左子树,左子树的右子树?
(2)什么时候构造右子树,右子树的左子树,右子树的右子树?
搜索更多相关主题的帖子: 二叉树 
2008-12-08 18:41
geninsf009
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:613
专家分:95
注 册:2008-8-16
收藏
得分:0 
既然是通过先序递归构造,那你只要考虑怎样构造当前结点,怎样构造左子树和右子树就可以了,而不需要考虑什么左子树的左子树,左子树的右子树,右子树的左子树,右子树的右子树,这些递归已经说明一切了,就像你用递归写fibnacci数列的程序一样,你只要考虑n,n-1,n-2,就可以了,而不是再去考虑,n-2,n-4...
2008-12-08 19:14
geninsf009
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:613
专家分:95
注 册:2008-8-16
收藏
得分:0 
或者说当递归已经进入左子树的时候,自然就开始构造左子树的左子树,左子树的右子树;右子树也一样,这就是递归让人回味的地方.
2008-12-08 19:28
快速回复:二叉树的建立
数据加载中...
 
   



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

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