gpt4 book ai didi

php - 如何计算特定级别选定用户下的节点数?

转载 作者:可可西里 更新时间:2023-11-01 08:52:00 25 4
gpt4 key购买 nike

我有一个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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com