使用PHP + MySQL的二叉树

Sha*_*han 7 php mysql treeview binary-tree codeigniter

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

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

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

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

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

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

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

  1. 邻接清单
  2. 路径枚举
  3. 嵌套集
  4. 关闭表

所以我想找到一个解决方案,它将减少插入开销并成功更新所有适用节点的点数.

我已经尝试了邻接List解决方案.

node ( id, parentid, leftChildId,rightChildId,leftCount,rightCount ) 
userStat(id,sdate,pairs,mlmIncome)
Run Code Online (Sandbox Code Playgroud)

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

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

虽然构建树的速度不仅仅是插入.嵌套集更好地构建树.

我在正确的方向吗?请帮忙 !

Thnx提前!

Phi*_*lip 2

该博客可能会帮助您 管理层次结构数据

您的问题听起来最熟悉的可能是修改后的预序树遍历