我有一个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等。 我只是在这里寻找逻辑。
以下是Create Table的SQL和一些示例Insert语句:
http://paste.ubuntu.com/1218345/
提前致谢
答案 0 :(得分:1)
如果您只是在寻找逻辑,那么伪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;
}