php:树形结构的算法


  产品分类,多级的树状 构造的论坛,邮件列表等许多地方我们都会遇到这样的问题:如何存储多级 构造的数据?

在PHP的 利用中,提供 后盾数据存储的通常是关系型数据库,它 可以 保留大量的数据,提供高效的数据检索和更新服务 。但是关系型数据的 根本 模式是纵横交织的表,是一个平面的 构造,假如要将多级树状 构造存储在关系型数据库里就需求进行 正当的翻译工作 。接下来我会将自己的所见所闻和一些有用的 教训和大家探讨一下 。

层级 构造的数据 保留在平面的数据库中 根本上有两种常用设计 步骤:

毗连目录模式(adjacency list model)

预排序遍历树算法(modified preorder tree traversal algorithm)

我不是计算机专业的,也没有学过什么数据 构造的东西,所以这两个名字都是我自己依照字面的意思翻的,假如说错了还请多多指教 。

  这两个东西听着 如同很吓人,其实十分方便 了解 。这里我用一个 方便食品目录作为我们的示例数据 。 我们的数据 构造是这样的:

Food

|

|---Fruit

| |

| |---Red

| | |

| | |--Cherry

| |

| |---Yellow

| |

| |--Banana

|

|---Meat

|

|--Beef

|

|--Pork

为了照应那些英文一塌糊涂的PHP 爱好者

Food:食物

Fruit:水果

Red:红色

Cherry:樱桃

Yellow:黄色

Banana:香蕉

Meat:肉类

Beef:牛肉

Pork:猪肉