在作Jena推導owl本體文件的一個項目的時候,遇到要實現記錄每一個節點的父節點的狀況,算法
一開始想的是經過樹形的數據結構來作,但後來發現這個很難,由於每次更新樹的時候,不知道數據結構
怎麼將新的子節點傳給樹,對數作一個更新,並且樹中並無存放那個節點是那個節點的父節點這樣的信息。編碼
其實這個問題只須要對訪問過的節點定義一個List,將訪問過的節點加入到這個List中,而後對與這個List,創建一個List
fatherList,用來存放這些節點的父節點,問題就很好的解決了,雖然對於多個節點對應同一個父節點的狀況,有一點浪費方法
存儲空間,可是編碼要簡單的多。數據
感悟:這個方法是本身忽然想到《圖論》中的最短路徑的方法(Dijkstra)中是這樣記錄父節點後想到的,因此項目
有些時候看書的時候以爲書中的方法很簡單,本身很容易就可以理解,可是當本身遇到一樣的問題的時候,卻一直想不到文件
書中那些很簡單可是很好的方法。這告訴咱們要多多回味一些經典的算法,裏面有不少咱們沒有真正理解的東西。感悟