子ノードの親ノードを出力する横断関数を作成しようとしています。横断Bツリー構造アルゴリズム
$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
配列をしようとしている:
例Bツリーここ
を見ては、私が使用しているサンプルデータセットです親の関連付けを含むすべての子ノード配列。
例出力:
- ノード(D)の両親である(D、B、F)
- ノード(H両親が(B、F)
- ノード(c)は ' )の親は(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>";
}
質問:どのように私は最も効率的なマナーでこの出力を達成することができますか?
あなた自身で解決しようとしたことを示してください。 – miken32
@ miken32コードが追加されました。 –