标题:二叉树的建立
只看楼主
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-248310-1-1.html




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

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