首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

小弟我数据结构期末考试的一道算法题.好象出错了,请各位鉴别一下

2012-02-04 
我数据结构期末考试的一道算法题.好象出错了,请各位鉴别一下.交换左右子树:结构类型如下typedefstructStNo

我数据结构期末考试的一道算法题.好象出错了,请各位鉴别一下.
交换左右子树:
结构类型如下
typedef   struct   StNode

{

ElemType   data;

struct   StNode   lchild,rchild;//

}BtNode,*BiTree;

我的分析是这样的:

这个结构体的声名是一层一层嵌套,最终,一个树被看作一个节点,就好象是   这样一个食物链(应该不准确,不过也差不多)

一条小鱼吃一个龙虾,然后小鱼被中鱼吃,终于再被大鱼吃,\

这样:最终的结果是,龙虾   小鱼   中鱼   都在大鱼的肚子里面   ,他们怎么能改变次序呢?

而且这样结构的一棵树很显然是没有实际意义的,因为,如果这个树节点要是非常多的话,那么他们是一体的,会是多大的内存空间?如果要是运行起来,怎么能装到一块内存中(如果要是很大的话,ˇ-ˇ)

再回到这个题中,他们的交换子树,和下面这个是等价的:

把一个INT型的树进行分解,试想如果要把一个4字节的INT树分解,然后重新排序,属于微观的东西了.根本也就没有什么实用的地方了.


所以,这道题目   因为最后的左右子树没有用指针表示,所以非常不合理

不知道我分析的对不对.


[解决办法]
这样定义应该是有逻辑错误的
这样的话结构体的大小都无法确定了
刚才试了一下,编译是通不过的
[解决办法]
应该没有问题
一个节点的类型本来就是这种结构的
它的左右孩子也可能为空啊
[解决办法]
lChild, rChild 要定义成指针的
[解决办法]
如果不是指针的话,那应该就不对。
因为一个普通的树不用指针的话很难建立,除非用对象。
没有分配内存是不会影响内存的
[解决办法]
typedef struct StNode

{

ElemType data;

struct StNode lchild,rchild;//

}BtNode,*BiTree;
这个定义是错的
自己包含自己,就是个无限的循环了,
应该包含的是指针
struct StNode *lchild,*rchild;

热点排行