【发布时间】:2020-05-15 12:52:54
【问题描述】:
我有代表二进制结构的users 表。
例如,user 有 left_id 和 right_id 可以是二进制的左右节点(left_id 和 right_id 是 users 表的外键)。
此外,user 具有 parent_id,它是 user 元素的上述(根)节点。
我需要计算一侧(左侧或右侧)从根的第 n 个深度处的二进制元素计数。
例如,看下面的图片。 用户左侧有 2 个深度的 3 个元素,左侧有 3 个深度的 7 个元素
我正在为应用程序使用 Laravel 框架并尝试解决问题: 我有一个计算用户元素的递归函数。
private function followersCount($depth, &$step)
{
$sum = 0;
// children attribute is the array of left and right elements
foreach ($this->children as $child) {
if ($step == $depth) return $sum;
$sum += $sum + $child->followersCount($depth, $step);
}
$step++;
return $this->children->count() + $sum;
}
但它会迭代所有二进制元素,无法控制$step 变量。
如果您有任何解决方案,我将不胜感激。
【问题讨论】:
标签: php laravel binary-tree