是否需要使用鍵和值來實現BST?我可以實現有方法調用,如下面的一個BST,將在其中作出比較時的遍歷是否應該去基於V值的左節點或右節點每個節點:是否有必要使用鍵和值來實現BST?
public class BST<V>
{
public void Insert(V value)
{
//implementation
}
public V Remove(V value)
{
//implementation
}
//other methods
}
或者,我可以實現BST使得其具有的方法調用像下面,其中K個鍵比較是否穿越到左節點或右節點確定:
public class BST<K key, V value>
{
public void Insert(K key, V value)
{
//implementation
}
//which of the following would then be the appropriate method signature?
public V Remove(K key)
{
//implementation
}
//or?
public V Remove(V Value)
{
//implementation
}
//other methods
}
鑑於此,你會推薦一個包含鍵和值的普通BST解決方案嗎? – 2010-01-12 18:06:44
絕對是的。這就是System.Collection類的工作方式。 – 2010-01-12 18:25:11
你確定你沒有考慮IDictionary風格嗎? .NET中的ICollection接口實現不提供直接訪問來修改元素,而IDictionary提供基於索引/鍵的訪問。就項目訪問而言,ICollection僅提供添加和刪除。 – 2010-01-21 05:31:34