C#:Return 引用 SortedSet 中的自定义节点

C#: Return reference to custom node in SortedSet

不可否认,我已经有很长时间没有学习我的数据结构了class,我觉得我没有完全理解使用树的概念。我需要一个可以容纳很多 'nodes' 并帮助我修改它们的结构。我的第一个想法是 BST,但每个人都告诉我 C# 有更好的 SortedSet。但是,我找不到改变节点或报告其位置的方法。也许我使用了错误的结构?这是我的 'nodes':

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);
    }
}

由于我大约有 100,000 个这样的节点,我希望它们能够自动排序,并且易于找到和更改。像这样:

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

也许树不是答案。我认为 BST 会使二进制搜索更容易,但也许我会改为使用 List。任何意见是极大的赞赏。 :)

使用我认为的字典。

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);
    }
}

客户

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);

假设节点名称是唯一的。