仅从父信息构建 TreeView
Build a TreeView from only parent information
我正在尝试建造一棵树。我对每个元素的唯一信息是他所指的父元素的 ID。
我有三个不同的记录:
Type TRecord1 = Record
ID : Integer;
Name : String255;
Res : Array[1..500] Of Byte;
End;
//------------------------------------------------------------------------------
Type TRecord2 = Record
ID : Integer;
Parents : Array [0..4] of Integer;
Customer : String100;
Res : Array[1..500] Of Byte;
End;
//------------------------------------------------------------------------------
Type TRecord3 = Record
ID : Integer;
Parents : Array [0..4] of Integer;
Datas : String20;
Res : Array[1..500] Of Byte;
End;
对于数据存储:我有一个文件用于一种记录,它存储该记录的所有数据
Record1 始终没有父项。
Record2 和 Record3 始终至少有 1 个父项(最多 5 个 => Parents 数组)
A Record2 可以是 Record2 的父节点,等等...除了 Record1 始终是根节点之外,它们之间没有层次结构。
如何有效地构建关联的树视图?
我可以首先构建 Record1 节点,这将是树的第一个节点。然后对于这个节点的每一个,我都必须找到与这个节点关联的Record3的Record2,等等,等等......看来会花费太多时间。
有没有用另一种方式创建树的想法?
目前,我将 TreeView 保存在一个文本文件中,并在节点和关联的记录之间创建了一个 link。但是我想从数据创建 TreeView 而不是在一侧有 TreeView 而在另一侧有数据
我猜您的记录项的 ID 是唯一的,因此可能会逐步分配给每条记录。这意味着旧记录的 ID 号低于新记录。
因此,您可以先按 ID 对所有记录进行排序,然后从 ID 最低的记录开始,向 ID 最高的记录排序。
现在,如果您的所有记录都只有一个 parent 可能,这肯定会假设您总是在其任何 child 之前创建一个 parent 记录记录。
但是,由于您的记录可能有多个 parent,因此您可能会遇到这样的情况,即当前记录中的 parent 之一引用了另一条记录尚未添加到您的树中。
我猜你可以通过分两次执行此操作来避免这种情况,在第一次通过时你尝试定位当前记录的节点相对于第一个 parent。然后在第二遍中,为剩余的 parent 添加连接。
我正在尝试建造一棵树。我对每个元素的唯一信息是他所指的父元素的 ID。
我有三个不同的记录:
Type TRecord1 = Record
ID : Integer;
Name : String255;
Res : Array[1..500] Of Byte;
End;
//------------------------------------------------------------------------------
Type TRecord2 = Record
ID : Integer;
Parents : Array [0..4] of Integer;
Customer : String100;
Res : Array[1..500] Of Byte;
End;
//------------------------------------------------------------------------------
Type TRecord3 = Record
ID : Integer;
Parents : Array [0..4] of Integer;
Datas : String20;
Res : Array[1..500] Of Byte;
End;
对于数据存储:我有一个文件用于一种记录,它存储该记录的所有数据
Record1 始终没有父项。 Record2 和 Record3 始终至少有 1 个父项(最多 5 个 => Parents 数组)
A Record2 可以是 Record2 的父节点,等等...除了 Record1 始终是根节点之外,它们之间没有层次结构。
如何有效地构建关联的树视图?
我可以首先构建 Record1 节点,这将是树的第一个节点。然后对于这个节点的每一个,我都必须找到与这个节点关联的Record3的Record2,等等,等等......看来会花费太多时间。
有没有用另一种方式创建树的想法?
目前,我将 TreeView 保存在一个文本文件中,并在节点和关联的记录之间创建了一个 link。但是我想从数据创建 TreeView 而不是在一侧有 TreeView 而在另一侧有数据
我猜您的记录项的 ID 是唯一的,因此可能会逐步分配给每条记录。这意味着旧记录的 ID 号低于新记录。
因此,您可以先按 ID 对所有记录进行排序,然后从 ID 最低的记录开始,向 ID 最高的记录排序。
现在,如果您的所有记录都只有一个 parent 可能,这肯定会假设您总是在其任何 child 之前创建一个 parent 记录记录。
但是,由于您的记录可能有多个 parent,因此您可能会遇到这样的情况,即当前记录中的 parent 之一引用了另一条记录尚未添加到您的树中。
我猜你可以通过分两次执行此操作来避免这种情况,在第一次通过时你尝试定位当前记录的节点相对于第一个 parent。然后在第二遍中,为剩余的 parent 添加连接。