我有一个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
输出应该是:
在给定 level
和给定 position
上给定 user_id
下的节点数。
例如如果函数如下所示
get_nodes(3, 4, 'left');
然后它应该返回: 在 4
用户 ID 3 下有 X 个节点我认为我必须构建一个可以递归处理的函数,尽管我希望得到建议。
请帮我构建这个函数。使用任何编程语言,如 C、PHP 等。 我只是在寻找这里的逻辑。
这是创建表的 SQL 和一些示例插入语句:
http://paste.ubuntu.com/1218345/
提前致谢
最佳答案
如果你只是在寻找逻辑,那么伪 C 代码应该没问题:
struct NodeStructure
{
int ID;
int leftID;
int rightID;
int level;
...
};
int countChildren( int nodeID, int level )
{
NodeStructure * node = find( nodeID );
if( node == NULL )
return 0;
if( node.level == level )
return 1;
return countChildren( x.leftID, level ) + countChildren( x.rightID, level );
}
NodeStructure * find( int nodeID )
{
// SQL CODE:
// SELECT * FROM User_mst WHERE id = nodeID;
// if( /* node has been found */ )
// fill NodeStructure
// else
// return NULL;
}
关于php - 如何计算特定级别选定用户下的节点数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12527265/