【发布时间】:2012-09-13 16:24:19
【问题描述】:
我有一个 MySQL 数据库,我将用户记录存储在下面的表结构中
User_mst
-------------------
id
user_name
parent_id
left_id
right_id
position (keyword "left", "right" as string)
node_level
我将用户记录存储在二叉树结构中,也就是说每个节点(用户)下最多有2个子节点。
从这个结构中,我想创建一个函数
输入:
1.user_id
2.level
3.position
输出应该是:
给定user_id、给定level和给定position下的节点数。
例如如果函数如下所示
get_nodes(3, 4, 'left');
然后它应该返回: 在级别 4
的用户 ID 3 下有 X 个节点我认为我必须构建一个将递归处理的函数,尽管我想要建议。
请帮我建立这个功能。使用任何编程语言,例如 C、PHP 等。 我只是在这里寻找逻辑。
这里是创建表的 SQL 和一些示例插入语句:
http://paste.ubuntu.com/1218345/
提前致谢
【问题讨论】:
-
列
node_level和参数level如何对应?您的数据库表看起来像是一个邻接列表模型和嵌套集合+级别信息的混合体。 -
感谢您关注@VolkerK。 node_level 和 level 指向同一个 db 字段 node_level。它是整个二叉树中节点的级别,例如称为根节点的第一个节点将具有 0 级别。之后会出现 1..2..3 关卡。我希望这会有所帮助。
-
而get_nodes()的参数
level应该是相对于user_id标识的节点还是完整树中的绝对值? -
您只需将 level 与 node_level 进行比较。因为这将是全局相对于整棵树。或者让我知道我是否误解了
-
嗯,一个示例树(最好是 sql INSERT 语句)和一些示例查询 + 预期结果会有所帮助...
标签: php mysql c linked-list binary-tree