| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1513 人关注过本帖
标题:头一回遇到一个很棘手的问题,在这里向大家请教一番
只看楼主 加入收藏
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:0 
以下是引用love云彩在2014-6-13 22:49:14的发言:


不错,我已经这样思考过了,但是我无法用程序实现。
也许是我当时心急烦躁,所以想不出思路。我也觉得像你这样的思路应该是可行的,但我一直写不出代码。

T版的代码是根据固定的数据来生成一个XML,这个我在学习XML的过程中就碰过了。
但是如果我输入的数据是一组随机数,然后将这组随机数进行二叉排序,然后再生成XML,这就要有一个固定的思路来依次提取结点中的数据,不然每一次输入的
数据不一样,就会有不同的二叉排序法,那样岂不是要修改程序来适应这组数据?


我的想法和你的一样,只是我还没有想出怎么个提取结点,才能保证生成的XML是正确的。



随机数的话又会涉及到问题1了,关键还是对二叉树的操作。

Maybe
2014-06-14 00:24
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
回复 31 楼 邓士林
对的,先把这个帖结了,等考完试后再开一帖来讨论,欢迎你的参与

思考赐予新生,时间在于定义
2014-06-14 00:49
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你原先问的是怎么生成XML文档,又说懂怎么遍历,我告诉你逐个结点输出、怎么嵌套树的层次。其实懂怎么遍历了,就知道怎么形成线性有序表,输出XML不过是语法问题而已。

授人以渔,不授人以鱼。
2014-06-14 10:28
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
回复 33 楼 TonyDeng
可能是我说得很模糊。

对于二叉树,我只懂得遍历二叉树,输出二叉树结点的数据,但是,
对于怎么个遍历法才能生成格式正确的XML文档,这个我是不会的

思考赐予新生,时间在于定义
2014-06-14 12:39
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你不要理会二叉树怎么遍历,随便一个遍历方法,输出到一个数组或List之类的线性表中,再按需要的顺序排序。关键是输出到线性表时把结点的名称也写好输出去,弄成好排序的字符串。把线性表排好,生成XML文档就不是问题。

授人以渔,不授人以鱼。
2014-06-14 12:43
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你通常的结点Node结构是{data,left,right},那不是死的,可以自己往里面添加字段,比如加个name字段(对应LNode或RNode),再加个level字段(用于层次序号)……等,有什么做不到的!书上说树的结构是那几项,就不能自己按需要多再多几项?是数据驱动程序,不是死磕算法,吃奶仔说绕了很大的圈才领悟过来,我不知道他指的是不是这个,但我一向是持数据导向意识形态的。

授人以渔,不授人以鱼。
2014-06-14 12:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
数据结构的结点Node,里面的data项才是数据的真身,它可能是普通的数据类型,也可能是值类型结构体(能赋值复制),也可能是引用类型结构体(不能直接赋值复制),排序的时候要考虑好这方面如何处理。其余的left/right之类,都是为了实现需要而添加的辅助信息,是可以无限添加的,比如,二叉树还有一种三叉结点链表的结构,连上层结点也指示了出来,就是为了回溯方便而设计的,这些信息,都可以按实际的需要无限往里添加,就算把链表做成像数组那样用序号访问也未尝不可。数据结构有很大自由权的啊,我曾经用数据库把本质上是二维数组的表数据做成树形浏览效果,用不着指针。

[ 本帖最后由 TonyDeng 于 2014-6-14 13:04 编辑 ]

授人以渔,不授人以鱼。
2014-06-14 12:59
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
以下是引用TonyDeng在2014-6-14 12:43:43的发言:

你不要理会二叉树怎么遍历,随便一个遍历方法,输出到一个数组或List之类的线性表中,再按需要的顺序排序。关键是输出到线性表时把结点的名称也写好输出去,弄成好排序的字符串。把线性表排好,生成XML文档就不是问题。


对的,我试过:不管使用哪种遍历方法,都用一个二维数组来保存结点中的数据,而且在保存进去的同时,就已经按照一定的顺序排列好了的。
在java里面,我也试过用List集合来存储,也是按照一定的顺序来存储。
但以上两种方法我都遇到了一些问题,我先好好整理一下,下午再把代码和运行结果贴上来

思考赐予新生,时间在于定义
2014-06-14 13:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
要二次排序,提示就到这里了,其余的你自己弄吧。

授人以渔,不授人以鱼。
2014-06-14 13:56
快速回复:头一回遇到一个很棘手的问题,在这里向大家请教一番
数据加载中...
 
   



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

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