我有一個樹,有很多節點(百萬+),需要加載到內存中。因此,我需要以最有效的方式將節點及其關係存儲在內存中。什麼是最好的數據結構?到現在爲止,我有兩個選擇:最佳的樹數據結構
//more obvious but the less efficient
class TreeNode
{
Node parent;
TreeNode[] children;
//additional fields
byte X;
byte Y;
byte marker;
string comment;
}
//more efficient
class TreeNode
{
TreeNode next; //reference to the next child of parent node,
//if isLast=true - reference to parent node
TreeNode firstChild; //reference to the first child of this node
bool isLast; //true, if this node is the last parents child
//additional fields
byte X;
byte Y;
byte marker;
string comment;
}
注意,我需要在這棵樹執行諸如瀏覽,刪除和插入,我需要這些足夠快。
編輯:最適合這種情況是使用較少的RAM來存儲整個樹。第二個標準是快速刪除,瀏覽和插入操作 - 在我上面寫的數據結構中,它們不應該花費更多的時間。我不能制定這個標準更嚴格
建議使用F#爲此! –
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –
你的標準樹算法可以工作,但是如果你在一個'List <>'中創建節點結構並且使用索引而不是引用來引用它們,那麼GC可能會更容易。 –