我很难编写一个输出子节点父节点的遍历函数。
看一下示例 b-tree
这是我正在使用的示例数据集:
$nodes = array(
array('f','b'),
array('f','g'),
array('b','a'),
array('b','d'),
array('g','i'),
array('d','c'),
array('d','e'),
array('i','h')
);
我正在尝试输出一个results
包含所有包含父关联的子节点数组的数组。
示例输出:
- 节点(d)的父母是(b,f)
- 节点(c)的父母是(d,b,f)
- 节点(h)的父母是(i,g,f)
我不知道如何遍历直接父节点。
foreach($nodes as $node){
//CHECK IF NODE EXISTS
if(array_key_exists($node[1],$results)){
//DO NOTHING
array_push($results[$node[1]],$node[0]);
}
else{
//CREATE NEW CHILD ARRAY
$results[$node[1]] = [];
//PUSH PARENT INTO CHILD ARRAY
array_push($results[$node[1]],$node[0]);
}
}
foreach($results as $k => $v){
echo "child[$k] parents(" . implode($v,', ').")" ;
echo "</br>";
}
问:我怎样才能在最有效率的庄园里实现这个输出?