【发布时间】:2011-11-10 16:36:05
【问题描述】:
我需要一点帮助。我的算法知识很薄弱。我无法在 PHP 中编写返回所有最新子级的递归函数。
假设我们的数组如下所示:
Array
(
[0] => Array
(
[id_category] => 1
[name] => Accueil
[id_parent] => 0
)
[1] => Array
(
[id_category] => 2
[name] => Accessoires
[id_parent] => 1
)
[2] => Array
(
[id_category] => 3
[name] => Merchandising
[id_parent] => 1
)
[3] => Array
(
[id_category] => 4
[name] => Pièces détachées
[id_parent] => 1
)
[4] => Array
(
[id_category] => 5
[name] => Excavateur
[id_parent] => 4
)
[5] => Array
(
[id_category] => 6
[name] => série 100
[id_parent] => 5
)
[6] => Array
(
[id_category] => 7
[name] => above
[id_parent] => 6
)
[7] => Array
(
[id_category] => 8
[name] => système hydraulique
[id_parent] => 7
)
[8] => Array
(
[id_category] => 9
[name] => série 200
[id_parent] => 5
)
[9] => Array
(
[id_category] => 10
[name] => thru
[id_parent] => 6
)
[10] => Array
(
[id_category] => 11
[name] => Compaction
[id_parent] => 4
)
[11] => Array
(
[id_category] => 12
[name] => système électrique
[id_parent] => 7
)
)
我想要getLastChildren (5) 或getLastChildren (6) 或getLastChildren (7),该函数返回一个答案数组(“8”、“12”)
我会试着举个例子。
如果我选择第 5 类: = 6 和 9 是孩子。
我会看穿孩子们。孩子 6 有两个孩子,7 和 10,孩子 9:没有孩子。
我把 9 放在孩子列表中。
孩子 7 有两个孩子,8 和 12。8 没有孩子。 12 没有孩子。我加了 8 和 12。
所以我们返回 (9,8,12) 10 没有孩子。我也补充了。
最后我(9,8,12,10)
那么我会怎么做,如果我搜索“类别 7 中的所有最后一个孩子”=> 8 和 12。我希望我的解释“更清楚一点”。
【问题讨论】:
-
“最新的孩子”是如何定义的?
-
看起来一个类别可以有多个孩子。在这种情况下,最后一个?
-
getLastChildren(n) 应该返回以 n 为根的子树的所有叶子吗?
-
@Raphaël:请使用
var_export(fr.php.net/manual/fr/function.var-export.php) 而不是print_r,我们更容易拾取阵列。