给定一个对应于叶节点位置的值数组,我将如何访问该节点


Given an array of values corresponding to the location of a leaf node, how would I access said node?

注意:我不熟悉有关树结构的术语。请原谅任何可能是我无知造成的疏忽!

实际示例

给定这样的数组:

Array
(
    [0] => 0
    [1] => 2
    [2] => 8
    [3] => 9
)

具有关键字"的树节点;9〃;将在CCD_ 1处找到(其中0是根)。给定上面的数组,我将如何在PHP中构建一个访问叶节点的语句?

目标代码

/*
    Let's say I am given a $leafNodeID of 9, and I'd like to save some
    data ($dataToSave) into said leaf node
*/
$leafNodeID = 9;
$dataToSave = array("name" => "foobar");
$tree_path = $this->findPathToRootNode($tree, $leafNodeID);    // This returns the array found above.
${?????} = $dataToSave;     // <-- Here be dragons

提前感谢!

编辑:对于那些想知道的人,我的findPathToRootNode函数只是递归地找到父节点,并将其保存为上面找到的数组格式。如果有更好的方法来表示所述数据(尤其是如果它解决了我的问题),那就更好了。

编辑:在通读中,这个问题似乎不是关于树,而是关于如何访问一个数组(给定其在单独数组中的结构)。这样标记。

创建一个自定位函数。这应该做技巧(未经测试)

function getLeaf($tree, $targetleaf, $depth = 0){
    if (isset($targetleaf[$depth+1])
        return getLeaf($tree[$targetleaf[$depth]], $targetleaf, $depth + 1)
    else
        return $tree[$depth];
}

$tree是数据,$tree是到数组的路径,$depth不言自明。

用调用函数

$leaf = getLeaf($tree,$targetleaf);