在做專案的過程中,經常會用到樹結構。關於樹結構的框架我也接觸過幾個,比如easyui中封裝的樹,ztree等。當然這些封裝好的框架只需要我們去按照api來使用即可,那麼樹的實現原理究竟是怎樣的。今天用最原始的**來拼接一下樹的組成結構。
效果:
要想出現樹結構,那麼資料庫中必須包含有可以形成樹結構的表,也就是可以區分出父節點和子節點。
id:節點id,pid;父節點id,level:等級標誌(根節點為0,根的一級子節點為1,一次類推),name:節點名稱
is_leaf:是否為葉子節點
在寫這個方法前,首先要建立乙個stringbuffer,用來講這些html拼接成乙個完整的字串。
private stringbuffer sbtreehtml=new stringbuffer();
/**
* 遞迴讀取分銷商樹
* * 第四步,生成樹結構
* @param conn
* @param id
* @param level 控制層次
*/private void readclienttree(connection conn,int id,int level)
throws sqlexception
通過以上描述,樹結構基本上就已經成型了。剩下的就是在前台頁面中呼叫此方法即可。
接下來就是對樹的操作了。
分析一下,增刪改,只有刪除是相對複雜的。它需要考慮的因素比較多,和查詢類似,需要考慮是否為葉子節點,如果為非葉子節點,那麼就需要進行遞迴刪除它的子節點。還要考慮,刪除的節點的父節點下面還有沒有其他的子節點,如果沒有需要更改父節點為葉子節點。
/**
* 遞迴刪除
* @param conn
*/public void recursiondelnode(connection conn,int id)
throws sqlexception
//執行刪除操作
delnode(conn,rs.getint("id"));
}//刪除自身節點
delnode(conn,id);
}catch(sqlexception e)finally }
/*** 刪除節點
* @param conn
* @param id
*/public void delnode(connection conn,int id)
throws sqlexceptioncatch(sqlexception e)finally
}
以上就是整個關於拼接樹結構的核心部分了。樹是web端常用的介面效果,利用它在很多方面可以清晰的表達組織結構,給大家一目了然的效果,了解它的原理以應萬變! java 遞迴呼叫
遞迴呼叫是呼叫自身的函式,並傳給自身的相應的引數,這一運算過程是一層層的進行的,直到滿足一定條件時,才停止呼叫。遞迴函式的特點 1.函式要直接或間接呼叫自身。2.要有遞迴終止條件檢查,即遞迴終止的條件被滿足後,則不再呼叫自身函式。3.如果不滿足遞迴終止的條件,則呼叫涉及遞迴呼叫的表示式 在呼叫函式自...
java中的遞迴呼叫
b 1 遞迴函式的定義 b 答 遞迴函式即自呼叫函式,在函式體內直接或間接的呼叫自己,即函式的巢狀是函式本身。2 遞迴方式 遞迴呼叫有直接遞迴和間接遞迴兩種方式。a 直接遞迴 在函式中出現呼叫函式本身。示例1 下面 求斐波那契數列第n項,斐波那契數列第一和第二項是1,後面每一項是前兩項之和,即1 1...
Java遞迴生成樹
注意 根節點的pid 0,其他節點的pid跟id是有對應的父子關係的。這裡只展示遞迴生成樹的 查詢資料庫的操作非常簡單,只用到了一句sql,然後將結果封裝成list。select id,pid,name from t menu service override public list tree 遞迴...