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

问题描述 投票:0回答:1

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

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;我如何将整个对象准确地存储在二叉树中

c# object binary-tree binary-search-tree
1个回答
0
投票

放弃,只将二进制树设置为对象类型,并为每种对象类型创建二进制树。

© www.soinside.com 2019 - 2024. All rights reserved.