पहली कुंजी SQL परिणामों को पूर्वजों की संख्या से क्रमबद्ध करना है। मैंने इसे PHP में किया क्योंकि मैं बहु-अंकीय संख्याओं की जटिलताओं से बचता हूँ।
यह एक क्रम में नोड्स की एक सूची प्रदान करता है जिसमें उन्हें वैध रूप से सम्मिलित किया जा सकता है।
Array
(
[1] => Array
(
[0] => 1
)
[4] => Array
(
[0] => 4
[1] => 1
)
[2] => Array
(
[0] => 2
[1] => 1
)
[3] => Array
(
[0] => 3
[1] => 1
[2] => 2
)
)
इस बिंदु पर, मुझे चाबियों की परवाह नहीं है, केवल पूर्वजों की सूची। पेड़ के माध्यम से पथ उपलब्ध नोड्स और शेष पूर्वजों के चौराहे के बीच पाया जा सकता है।
function add_node($ancestors, &$tree) {
if (count($ancestors) == 1) {
$tree[array_pop($ancestors)] = array();
return;
}
$next_node = array_intersect($ancestors, array_keys($tree));
$this->add_node(
array_diff($ancestors, $next_node) ,
$tree[array_pop($next_node)]
);
}