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:猪肉 |