-7

我的数据结构是这样的:

+-------------+------+-------+
| USERID (PK) | LEFT | RIGHT |
+-------------+------+-------+
|     001     |      |  002  |
|     002     | 003  |  004  |
|     003     | 005  |       |
|     004     |      |       |
|     005     | 008  |  007  |
|     008     |      |       |
|     007     | 009  |       |
|     009     |      |       |
+-------------+------+-------+

该数据结构表示二叉树。每行代表一个节点,每个节点都有一个USERID. LEFT和列中的条目RIGHT表示该节点的两个子节点,用USERIDs 引用它们。我想遍历这棵树。

我正在使用带有 Access 数据库的 Visual Studio 2005。

4

1 回答 1

2

我能想到的最好的答案是你选择了完全错误的方式来表示你的数据。

表示用户 ID 的一种更明智的方式是(我猜)表中的一个简单列,其中包含用户的详细信息,并带有一个索引,可以让您快速查找。然后“遍历”退化为一个简单的选择并迭代结果集。

如果您想继续使用当前(IMO 愚蠢的)表结构,那么 SQL 不会帮助您遍历树。如果您尝试遍历数据库中的树,您最终会为树中的每个节点进行选择,这将非常慢。

您最好的选择是选择表的所有行,在内存中构造一棵树,然后遍历该树。

于 2010-11-07T10:06:15.720 回答