我正在採取約15,000個節點,並試圖從它們建立一個層次結構。節點不能以任何方式排序,並且每個節點可以有無限數量的孩子 - 但是父母總是會在他們的孩子面前被饋送到該功能。我的代碼適用於N的小值,但最終超過N> 2,000時服務器上的最大執行時間。我不知道是否有更好的方式來做到這一點,但這裏是我有:樹建築功能超過最大執行時間
function insertNode(&$treeNode, $insertNode) {
if($insertNode['DEPTH'] <= $treeNode['DEPTH']) return false;
if($treeNode['ID'] == $insertNode['PARENT_ID']) {
$treeNode['CHILDREN'][] = $insertNode;
$treeNode['CHILD_COUNT']++;
return true;
}
else {
foreach($treeNode['CHILDREN'] as $key=>$value) {
$found = insertNode($treeNode['CHILDREN'][$key], $insertNode);
if($found) {
$treeNode['CHILD_COUNT']++;
return true;
}
}
}
}
的解決方案,現在是限制我的遞歸建築只有幾千節點值得深入我的最好的想法,然後在Javascript中調用每個底層節點的腳本,直到樹真正完成。不過,我寧願能夠一勞永逸。
...野生遞歸出現了! – MightyPork