• 2008-01-09

    java里面实现Tree - [工作学习]

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://jimsu.yourblog.org/logs/628238.html

    Tree不是jdk中自带的标准数据结构,但是这个数据结构经常用到。 tree有很多种,比如典型有二叉树,红黑树等,jdk中TreeSet,TreeMap有部分实现,大家看一下代码便能搞清楚里面到底做了哪些工作。 最近的工作需要用到tree,不是简单的二叉树,而是每个节点下可能有n个子节点的树,这些子节点存放的元素还有一定的顺序,实现的tree最终还必须是一个Collection。 虽然思路不复杂,要写好还真不容易。 首先,tree是递归的,我们需要实现的类较多,包括Node,Collection,Iterator等。Node需要包含自身存储的对象,而且包含父亲,儿子,兄弟,本身是个递归结构。递归起来就要求思路必须清楚,调试要仔细,不然很容易出错。 其次,Iterator必须能实现前序,中序等各种遍历方式,一般来说,至少实现一种吧,呵呵。 再次,要实现addNode,removeNode,findNode等一系列操作接口,逻辑比List要复杂得多,尤其是每个节点还要排序,查找的时候需要使用二分法。 总算完成,也参考了KSS library的实现,这个库写得还可以,写出来的人java和数据结构基础不错。 通过实现tree,程序的可扩展性好了很多,原来实现使用了大量的if else语句,根据不同的条件来选择响应,现在每个节点都存储一个callback类,快速匹配到就call了,哈哈。 后记: 大家可以参考《Java数据结构和算法中文第二版》 最近2米国教授大肆批评当前计算机教育把java作为入门语言,而且很多人工作中也只用java,导致目前的程序员对很多基础,底层的东西了解甚少,本人甚是认同,如果不了解c,我觉得也很难写出优美高效的程序。毕竟c能够让你更了解程序是如何运行的,如果能了解一些汇编,就更好了,C++/Java都不适合作为第一个入门的语言。 当然,java是非常强大的。

    收藏到:Del.icio.us




发表评论

您将收到博主的回复邮件
记住我