使用PHP + MySQL的二叉树

时间:2012-03-19 18:24:50

标签: php mysql codeigniter treeview binary-tree

我正在使用PHP(CodeIgniter)和MySQL为网站实现MLM树。我需要在数据库中实现二叉树实现。以下事项应予以考虑:

  1. 对于每个节点,左子树中子项/节点数的最小值和右子树中子项/节点数称为一对。对于每对,一个节点获得1个点 - 应该存储在数据库中(节点代表用户)

  2. 创建新节点(无论在哪里)时,许多节点的对可能会递增。因此,无论何时创建节点,都应更新每个节点的点(在适用时加1)

  3. 另一个约束是每天任何节点不能超过100个点。

  4. 我还需要构建(在网页中显示)树。只显示4-5个级别。

  5. 数据库可能有100000个节点

  6. 我发现主要有4个模型用于在MySQL中实现hieararchical数据,PHP

    1. 邻接列表
    2. 路径枚举
    3. 嵌套集
    4. 关闭表
    5. 所以我想找到一个解决方案,它可以减少插入开销并成功更新所有适用节点的点。

      我尝试了邻接List解决方案。

      node ( id, parentid, leftChildId,rightChildId,leftCount,rightCount ) 
      userStat(id,sdate,pairs,mlmIncome)
      

      每次插入一个节点时,我向上移动并继续增加子计数。如果新对生成,那么我也增加它并增加点数。 我正在使用存储过程执行这些操作。

      我选择此解决方案而不是嵌套集的原因是: 对于插入的每个节点,要为嵌套集更新的节点数总是大于邻​​接列表。

      虽然构建树的速度不仅仅是插入。并且嵌套集在构造树时更好。

      我正朝着正确的方向前进吗?请帮忙!

      Thnx提前!

1 个答案:

答案 0 :(得分:1)

此博客可能会帮助您managing hierarchy data

您的问题听起来最熟悉的可能是Modified Preorder Tree Traversal