我正在尝试使用二叉树来存储对象,但无法弄清楚如何完全适合它们。
说一个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;我如何将整个对象准确地存储在二叉树中
答案 0 :(得分:0)
放弃,仅将二叉树设置为对象类型,并为每种对象类型创建二叉树。