C#:返回对SortedSet中自定义节点的引用

C#:返回对SortedSet中自定义节点的引用,c#,reference,return,sortedset,C#,Reference,Return,Sortedset,诚然,我已经很久没有上数据结构课了,我觉得我还没有完全理解使用树的概念。我需要一个可以容纳很多“节点”的结构,并帮助我改变它们。我的第一个想法是BST,但每个人都告诉我C#有更好的分类集。但是,我找不到改变节点或报告其位置的方法。也许我用错了结构?这是我的“节点”: public class Node { public string name { get; } public List<int> someList { get; set; } public No

诚然,我已经很久没有上数据结构课了,我觉得我还没有完全理解使用树的概念。我需要一个可以容纳很多“节点”的结构,并帮助我改变它们。我的第一个想法是BST,但每个人都告诉我C#有更好的分类集。但是,我找不到改变节点或报告其位置的方法。也许我用错了结构?这是我的“节点”:

public class Node
{
    public string name { get; }
    public List<int> someList { get; set; }

    public Node(string s, int i)
    {
        name = s;
        someList = new List<int>();
        someList.add(i);
    }

    public void add(int i)
    {
        someList.Add(i);
    }

    public void remove(int i)
    {
        someList.Remove(i);
    }
}
公共类节点
{
公共字符串名称{get;}
公共列表someList{get;set;}
公共节点(字符串s,int i)
{
name=s;
someList=新列表();
添加(i);
}
公共空白添加(int i)
{
添加(i);
}
删除公共空间(int i)
{
删除(i);
}
}
因为我将有大约100000个这样的节点,所以我希望它们能够自动排序,并且很容易找到和修改。大概是这样的:

SortedSet<Node> nodes = new SortedSet<Node>();
List<int> myList = {1, 2, 3};
Node node1 = new Node("myNode", myList)
nodes.Add(node1);
nodes.get("myNode").remove(2); //remove #2 from someList in node object
SortedSet节点=新的SortedSet();
列表myList={1,2,3};
节点node1=新节点(“myNode”,myList)
nodes.Add(node1);
nodes.get(“myNode”).remove(2)//从节点对象中的someList中删除#2

也许一棵树不是答案。我原以为BST会使二进制搜索更容易,但也许我会改为使用列表。非常感谢您的建议。:)

我想用字典吧

public class Node
{
    public string name { get; }
    public List<int> someList { get; set; }

    public Node(string s, List<int> i)
    {
        name = s;
        someList = i;
    }

    public void add(int i)
    {
        someList.Add(i);
    }

    public void remove(int i)
    {
        someList.Remove(i);
    }
}
公共类节点
{
公共字符串名称{get;}
公共列表someList{get;set;}
公共节点(字符串s,列表i)
{
name=s;
someList=i;
}
公共空白添加(int i)
{
添加(i);
}
删除公共空间(int i)
{
删除(i);
}
}
客户

Dictionary<string, Node> nodes = new Dictionary<string, Node>();
List<int> myList = new List<int>{ 1, 2, 3 };
Node node1 = new Node("myNode", myList);
nodes.Add(node1.name, node1);
nodes["myNode"].remove(2);
字典节点=新建字典();
List myList=新列表{1,2,3};
节点node1=新节点(“myNode”,myList);
nodes.Add(node1.name,node1);
节点[“myNode”]。删除(2);

假设节点名称是唯一的。

一个
get
如何允许您
删除
?一个
SortedSet
其中
T
不可
IComparable
且未指定
icomparaer
的将在添加第二个元素后抛出<代码>分拣集
自动维护其顺序。