将整个对象存储在BinarySearchTree C#中

时间:2020-05-18 15:34:06

标签: c# object binary-tree binary-search-tree

我正在尝试使用二叉树来存储对象,但无法弄清楚如何完全适合它们。

说一个Object1 Foo = new Object1(string nameID, string phoneNumber, string classification)

下面的代码段使用IComparable(节点的一部分)来比较基于对象nameID(直接访问Foo.NameID或通过函数Foo.getID())的节点值。 ,这样做之后,由于只有ID存储在树中,因此我无法访问该对象存储的所有其他信息。我尝试过将ID和Object一起存储的版本,但效果不佳,因此我以此为基础。

这是节点添加的一部分,它仅使用对象存储检查左节点,我不知道如何比较该节点适合左还是右(因此ID)。

    public class Node {
        public IComparable item;
        public Node left;
        public Node right;

        public Node(IComparable item) {
            this.item = item;
            left = null;
            right = null;
        }

        public IComparable Item {
            get { return item; }
            set { item = value; }
        }
    }


    public class BinaryTree {
    // some other functions and stuff...

    public void AddNodeFunction(IComparable item, Node node) {
    // sort out if there is a root etc etc

    Node thisNode = root;
    if (item.CompareTo(node.Item) == -1) {
        if (thisNode.left == null) {
            Node newNode = new Node(item);
            thisNode.left = newNode;
            addComplete = true;
        } else { thisNode = thisNode.left;}
    }
    // more stuff...
    }

我将如何存储整个对象(与弄清楚该节点应该向左还是向右相关),但仍然能够检索它?我目前在值上有一个布尔值查找,因此应该不难为返回该对象而做准备,但是最好是在需要时直接修改该对象(如果可能的话)还是最好简单地删除并重新在不使用列表的情况下添加新信息。

TDLR;我如何将整个对象准确地存储在二叉树中

1 个答案:

答案 0 :(得分:0)

放弃,仅将二叉树设置为对象类型,并为每种对象类型创建二叉树。