我在层次结构中有一组对象。有一个顶部的“根”节点,它具有子节点,子节点又具有子节点等。我正在尝试使用嵌套集模型将此结构保存到数据库中,其中每个节点的每个“边”都被编号以定义层次结构,如在 MySQL 中管理分层数据:
(来源:mysql.com)
我的问题是计算左右值。我通常使用 RecursiveIteratorIterator 来遍历层次结构,但是如果不求助于通过引用解析索引变量的递归函数,我无法弄清楚如何计算数字。
有任何想法吗?
这可能没用,但这是我目前拥有的(不正确的)代码:
$iterator = new RecursiveIteratorIterator(
new Node_List(array($root)),
RecursiveIteratorIterator::SELF_FIRST);
$i = 0;
foreach ($iterator as $node) {
$node->left = ++$i;
$node->right = ++$i;
}
如您所见,这将给出如下结果:
Node
Node
Node
左右值:
Node (1, 2)
Node (3, 4)
Node (5, 6)
当他们应该是:
Node (1, 6)
Node (2, 3)
Node (4, 5)