| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1513 人关注过本帖
标题:头一回遇到一个很棘手的问题,在这里向大家请教一番
取消只看楼主 加入收藏
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:13 
头一回遇到一个很棘手的问题,在这里向大家请教一番
图片附件: 游客没有浏览图片的权限,请 登录注册

如图,这是一个二叉树。
要求:1、输入一组整型数,对其进行二叉排序,如果插入一个数,不影响二叉排序结构。
2、将此二叉树生成一个XML文档。
XML文档格式要求《如下图》:
附带假设条件的分析:
图片附件: 游客没有浏览图片的权限,请 登录注册


我遇到的问题是:
不知道该怎么生成这样格式的XML文档,在二叉树中找不到规律,不知道应该怎样读取二叉树中的结点才能生成这样的XML文档。
二叉树的排序和插入数据我是会的,就是一直找不出二叉树转换成XML文档的规律,这个问题一直纠结了4个下午,到现在都还
没想出用什么方法将二叉树转换成这样格式的XML文档,要是有人能想到思路,跟我分享一下吧,为了这个问题吃不好睡不香啊
搜索更多相关主题的帖子: 二叉树 影响 
2014-06-11 20:35
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
回复 4 楼 TonyDeng
给个思路啊,在算法当中我还是新手,这样的问题要是有人能指引我一下就好了

思考赐予新生,时间在于定义
2014-06-11 21:00
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
说白了,就是将下面这个二叉树转换成如图的XML文档
图片附件: 游客没有浏览图片的权限,请 登录注册

将上图转换成下图:
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 love云彩 于 2014-6-11 22:16 编辑 ]

思考赐予新生,时间在于定义
2014-06-11 22:06
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
回复 8 楼 TonyDeng
图的意思我是看懂了的,但就是想不出解决方法,纳闷啊

思考赐予新生,时间在于定义
2014-06-11 22:11
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
主要是生成XML的时候,用的是dom4j.jar包,里面的方法都是基于Element,Attribute对象来操作的。
比如说:
有下面一个这样的XML文档
图片附件: 游客没有浏览图片的权限,请 登录注册

那么我就要书写一下的程序代码:
程序代码:
public static void write() {  
        try {  
            // 创建一个xml文档  
            Document doc = DocumentHelper.createDocument();             
            Element root = doc.addElement("root");  //创建一个根元素
            root.addAttribute("id", "1");  //为根元素添加一个属性
            
            Element student = root.addElement("student");  //root根元素添加一个子元素student
            student.addAttribute("id", "2");  //为student添加属性
            
             Element student1 = root.addElement("student");  //root根元素添加一个子元素student
             student1.addAttribute("id","3");//为student添加属性
              
            File file = new File("src/dom4j-modify.xml");  
            if (file.exists()) {  
                file.delete();  
            }  
            file.createNewFile();  
            XMLWriter out = new XMLWriter(new FileWriter(file));  
            out.write(doc);  
            out.flush();  
            out.close();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  

思考赐予新生,时间在于定义
2014-06-11 22:33
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
回复 12 楼 Explorerlxz
一开始我也感觉不是很难,但是越做就越复杂,想的东西越来越多。
曾试过用矩阵来存储二叉树,但是还是没生成一个按照要求的XML文档
在java里面,也试过用List来存储,首先是创建三个List对象,分别存储含有子节点的父母结点、左结点、右结点,
虽然能成功按照分类存储到List中,但是却生成不了按照要求的XML文档,例如下面这个失败的XML文档
图片附件: 游客没有浏览图片的权限,请 登录注册

思考赐予新生,时间在于定义
2014-06-11 22:41
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
回复 14 楼 TonyDeng
不知道是不是这几天我因为要考4级英语而压力太大不,脑子特别乱,一点头绪都没有。
dom4j是可以在.NET里面使用,但是我想知道的是怎么个生成法。希望老大给个例子来瞧瞧。
我现在脑子都乱乱的,想什么都晕晕的

思考赐予新生,时间在于定义
2014-06-11 22:44
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
如果没有人能帮我解决,那问题就得搁置到暑假了

思考赐予新生,时间在于定义
2014-06-12 18:21
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
以下是引用tlliqi在2014-6-12 18:24:30的发言:

楼主还没解决 会的帮下 我来加分给帮助者

好感动,谢谢小t

主要是我现在没时间弄这个,又要复习4级考试,又要期末考试,所以腾不出时间在这里展开讨论

思考赐予新生,时间在于定义
2014-06-12 19:46
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
以下是引用邓士林在2014-6-13 18:55:47的发言:

TD这样的话已经把XML文件已经固定死了,如果在开发过程中利用XML进行菜单项的配置或其它配置,这样写太麻烦了,我前段时间做了一个是利用TreeList控件做的,只是简单的绑定,命名的话也没有那么多要求。就是将节点进行遍历读取到datatable中,然后进行绑定,设计的时候应该采用递归的思想进行处理,但是TreeList要求具有ID、ParentID的对应关系,所以在设计递归的时候就比较困难了,然后就没做成,最后采用了原始的遍历读取,然后处理。
      对于你这个命名要求,有两个方面要注意,第一个是所在的层数,第二个是所在该层中的ID;突然有个想法,你可以设计算法进行二叉树的遍历,每读取一个节点就进行写入XML中一个节点,然后接着读取左节点,然后再在读取右节点,在读取的过程中记录下所在的层数和该层节点的ID,每次读取进行叠加,右节点读取后将根节点赋给做节点,同时进行左右节点的判断,然后再将根节点赋给上一个根节点的右节点。这样是不是可以形成递归呢?我也不知道,只是想法。

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

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

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

思考赐予新生,时间在于定义
2014-06-13 22:49
快速回复:头一回遇到一个很棘手的问题,在这里向大家请教一番
数据加载中...
 
   



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

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