树比较的一个另类方法

        对两棵树进行比较是信息系统中经常需要实现的功能之一,如比较组织结构的不同,比较产品BOM结构的不同等,通常我们所采用的方法都是使用树数据结构来比较,如遍历,迭代等方法来实现。本文展示了一个比较另类的比较方法,供大家参考。
        在我现在做的一个系统中,同样要实现树比较,其用例如下图描述:

如果对产品结构有一点印象的人可能知道,在一个产品中零部件的结构往往是十分复杂的,不仅数量多,而且往往层次也比较深,想想一个汽车的构造,如果要对两个BOM比较,采用传统的树比较方法,遍历和迭代所带来的
效率是非常低的。
        一次偶然的机会我在CodeProject上看到一篇文件比较的文章,心想能不能使用将BOM结构导出为文件,再将文件比较是不是效率会更高一些呢?我设想的用例的序列图如下图所示:

主要思想就是将BOM树都导出为文本文件,其中FileEngine类为导出BOM的引擎类和进行文件比较的引擎类,HtmlEngine类是将比较结果生成为Html文件的引擎类。之所以选择用Html文件来存储比较结果,一个是Html相对比较容易生成,另外还可以很方便的查看,如果使用拷贝屏幕或者其他格式的文件都必须自己实现使用不同颜色标识不同之处的功能。
        目前已经得到实现,美中不足的是文件比较的效率需要得到进一步的提高。如果大家有什么建议,请告诉我。

posted @ 2006-08-29 13:51  释子  阅读(2427)  评论(17编辑  收藏  举报