在做Jena推导owl本体文件的一个项目的时候,遇到要实现记录每个节点的父节点的情况,
一开始想的是通过树形的数据结构来做,但后来发现这个很难,因为每次更新树的时候,不知道
怎么将新的子节点传给树,对数做一个更新,而且树中并没有存放那个节点是那个节点的父节点这样的信息。
其实这个问题只需要对访问过的节点定义一个List,将访问过的节点加入到这个List中,然后对与这个List,建立一个
fatherList,用来存放这些节点的父节点,问题就很好的解决了,虽然对于多个节点对应同一个父节点的情况,有一点浪费
存储空间,但是编码要简单的多。
感悟:这个方法是自己突然想到《图论》中的最短路径的方法(Dijkstra)中是这样记录父节点后想到的,所以
有些时候看书的时候觉得书中的方法很简单,自己很容易就能够理解,但是当自己遇到同样的问题的时候,却一直想不到
书中那些很简单但是很好的方法。这告诉我们要多多回味一些经典的算法,里面有很多我们没有真正理解的东西。