二进制计数

时间:2010-11-07 08:24:59

标签: ms-access binary-tree counting

我的数据结构是这样的:

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

此数据结构表示二叉树。每行代表一个节点,每个节点都有一个USERIDLEFTRIGHT列中的条目通过引用USERID来表示该节点的两个子节点。我想遍历这棵树。

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

1 个答案:

答案 0 :(得分:2)

我能想出的最佳答案是你选择了完全错误的表示数据的方法。

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

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

最好的办法是选择表格的所有行,在内存中构建一个树,然后遍历该树。