PHP递归遍历对象树

gan*_*ang 4 php recursion

我有一个$ branch对象,可以包含其他$ branch对象:

$branch->children(); 
Run Code Online (Sandbox Code Playgroud)

他们每个人都可以有$ apple作为孩子。

$branch->apples();
Run Code Online (Sandbox Code Playgroud)

如何从$ branch递归收集所有$ apples?

function collectApples($branch){
    $apples = array();
    ?
    return $apples;
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*per 5

使用DFS收集特定分支的所有苹果:

function collectApples($branch) {
    $apples = $branch->apples();
    foreach ($branch->children() as $child) {
        $apples = array_merge($apples, collectApples($child));
    }
    return $apples;
}
Run Code Online (Sandbox Code Playgroud)