使用parent_id关系从现有位置表创建二叉树

时间:2011-12-06 02:03:08

标签: binary-tree binary-search-tree

我花了半天的时间研究二叉树和二元搜索树,根本无法理解它们,或者它是如何适用于我在这里的。我所看到的所有阅读都在概念上相当混乱,没有一个给出真实世界的例子。

我继承了一个MySQL和PHP系统,它有一个地理位置表。这本质上是分层的,并且所有记录都通过parent_id字段链接到它们的直接父级。

e.g。新西兰 - >北岛 - >奥克兰 - >奥克兰市

此表还有两个名为“lft”和“rgt”的字段,这些字段已经填充。我的工作是使用更多(和更改的)地理位置更改此表,从而更新这些lft和rgt值。

我理解如果我查看子节点的lft和rgt值并写一个查询效果:SELECT * FROM table WHERE lft< = child_left AND rgt> child_rgt,我会得到一系列祖先。

但我不明白这个的逻辑。我没有遵循将这些lft和rgt值分配给记录的理论。它们肯定与记录本身的唯一ID没有任何关联。

有人可以通过示例向我指出一个合适的资源吗?或者有一种解释BST的简单方法?

1 个答案:

答案 0 :(得分:0)

将来的搜索:

我发现2003年的这篇旧文章很好地解释了它。

第3页还有一个PHP函数,用于遍历树,并使用现有父作为参考为每个项目分配左右值。

http://www.sitepoint.com/hierarchical-data-database/