2013-02-14 168 views
2

什麼是創建隨機樹(或滿足樹屬性的鄰接矩陣)的好方法?我目前有以下數據結構,我正在返回,但我想隨機生成這個。有什麼建議麼?創建隨機樹?

return [{ 
     Source: "A1", 
     Target: "A2", 
    }, { 
     Source: "A2", 
     Target: "A3", 
    }, { 
     Source: "A1", 
     Target: "A4", 
    }, { 
     Source: "A4", 
     Target: "A6", 
    }, { 
     Source: "A4", 
     Target: "A7", 
    }, { 
     Source: "A3", 
     Target: "A8", 
    }, { 
     Source: "A3", 
     Target: "A5", 
    }]; 
+0

當你說隨機..你是指平衡樹? – smk 2013-02-14 15:33:03

+0

@SajitKunnumkal:其實任何事情都很好。最好有更多的葉節點,但除此之外,我沒有任何偏好。 – Legend 2013-02-14 15:36:48

回答

5

具有n個節點A樹可以由n-2個整數的序列來獨特地表達(在範圍[0,N-1])。這被稱爲Prüfer sequence

創建一個隨機序列應該沒有問題。然後,你只需要將序列轉換爲樹形結構,就完成了。

+0

謝謝!這正是我正在尋找的。我假設當你說'創建一個隨機序列應該沒有問題'時,這只是一個隨機整數數組,並沒有特別的限制,他們需要遵循。它是否正確?我的意思是如果有一種方法來控制生成的樹的深度。 – Legend 2013-02-14 20:33:38

+0

是的,序列沒有進一步的限制(條目的範圍除外)。如果你想控制深度,你需要定義樹的深度。畢竟你可以設置一個任意節點作爲根節點。但除此之外,無法控制深度。 – 2013-02-14 21:12:42

+0

太棒了!感謝您的時間。 – Legend 2013-02-14 23:30:43