Tengo un conjunto de objetos en una jerarquía. Hay un nodo "raíz" superior y tiene nodos secundarios, que a su vez tienen nodos secundarios, etc. Estoy tratando de guardar esta estructura en una base de datos usando el modelo de conjunto anidado, donde cada "lado" de cada nodo está numerado para definir la jerarquía, como en Managing Hierarchical Data in MySQL:PHP RecursiveIteratorIterator y conjuntos anidados
alt text http://dev.mysql.com/tech-resources/articles/hierarchical-data-4.png
Mi problema es el cálculo de los valores de izquierda y derecha. Normalmente utilizo RecursiveIteratorIterator para iterar sobre la jerarquía, pero no puedo calcular cómo calcular los números sin recurrir a una función recursiva que analiza una variable de índice por referencia.
¿Alguna idea?
es probable que sea de ninguna utilidad, pero este es el código (incorrecta) En este momento tengo:
$iterator = new RecursiveIteratorIterator(
new Node_List(array($root)),
RecursiveIteratorIterator::SELF_FIRST);
$i = 0;
foreach ($iterator as $node) {
$node->left = ++$i;
$node->right = ++$i;
}
Como se puede ver, que daría algo como esto:
Node
Node
Node
izquierda y valores correctos de:
Node (1, 2)
Node (3, 4)
Node (5, 6)
cuando deberían ser:
Node (1, 6)
Node (2, 3)
Node (4, 5)