排列是組合數學問題,而很多組合數學問題都可以在圖之間進行轉換。樹是一種特殊的圖。在這裡我用一種特殊的樹結構實現排列算法,這種樹就是N層滿N叉樹(N可以是任意自然數)。系統排列最早由德國的治療師伯特海靈格創立而來。這種治療方法裡,會把個人放在一個更大的整體裡面來觀察,如家庭系統或一個組織,而不是把個人看做一個獨立的實體。
基本介紹
- 中文名:排列樹
- 外文名:Arrangement of trees
- 類別:一種特殊的圖
- 用途:解決組合數學問題
含義
設計一個可排列的樹形結構
--第一層子節點1(000100)
----第二層子節點1(000101)
----第二層子節點2(000102)
----第三層子節點3(000103)
--第一層子節點2(000200)
----第二層子節點1(000201)
----第二層子節點2(000202)
----第三層子節點3(000203)
--第一層子節點3(000300)
如果按照這樣的排列順序插入資料庫表里。通過dtree的js來實現,因為按照id,從數
據庫取出來的記錄集List已經是一個排列好了的結構,所以把List傳到jsp頁面,再循
環給dtree.add(id,name,parent),這樣實現成樹沒有任何問題。
資料庫表結構如下:
id -- 記錄id
name -- 節點名稱
parent -- 父節點id
現在如果希望把這顆樹當中的節點的排列順序做個調整,把第一層子節點1(000200)和
第一層子節點2(000200)的順序對調。如:
根節點(000000)
--第一層子節點2(000200)
----第二層子節點1(000201)
----第二層子節點2(000202)
----第三層子節點3(000203)
--第一層子節點1(000100)
----第二層子節點1(000101)
----第二層子節點2(000102)
----第三層子節點3(000103)
--第一層子節點3(000300)
這樣dtree好像無法做到,想到的是把傳給頁面的List里已經排好了順序,這樣dtree
才能辦到。問題是,現在如何設計資料庫表,加個欄位,這個欄位放什麼好,怎樣才
能得到一個已經排列好了的List,List裡面的對象順序如下:
根節點(000000)
--第一層子節點2(000200)
----第二層子節點1(000201)
----第二層子節點2(000202)
----第三層子節點3(000203)
--第一層子節點1(000100)
----第二層子節點1(000101)
----第二層子節點2(000102)
----第三層子節點3(000103)
--第一層子節點3(000300)
關於系統排列
舉例
void backtrack(int t) {
if (t > n)
output(x);
else
for (int i = t; i<=n; i++)