Я несколько часов чесал голову за это ...
Проблема:
Binary Tree
(0) depth 0
/ \
10 20 depth 1
/ \ / \
30 40 50 60 depth 2
Я пытаюсь написать функцию, которая принимает глубину в качестве аргумента и возвращает сумму значений узлов данной глубины.
Например, если я пройду 2, он должен вернуть 180 (то есть 30 + 40 + 50 + 60)
Я решил использовать поиск по дыханию, и когда я нахожу узел с желаемой глубиной,
Суммируйте значение, но я просто не могу понять, как определить, какой узел на какой глубине.
Но при таком подходе я чувствую, что иду в совершенно неверном направлении.
function level_order($root, $targetDepth) {
$q = new Queue();
$q->enqueue($root);
while(!$q->isEmpty) {
//how to determin the depth of the node???
$node = $q->dequeue();
if($currentDepth == $targetDepth) {
$sum = $node->value;
}
if($node->left != null) {
$q->enqueue($node->left);
}
if($node->right != null) {
$q->enqueue($node->right);
}
//need to reset this somehow
$currentDepth ++;
}
*
} * 1013