Базовый образец Java: задано двоичное дерево и целое число, которое является глубиной целевого уровня. И вычислить сумму узлов на целевом уровне.Уровень двоичного уровня дерева -
Я добавляю значение в функции слева и справа. Почему это решение не работает в этом случае, может ли кто-нибудь помочь объяснить?
Также, когда функция travese
была возвращена, возвращается ли она к корню родителя или больше, как break;
в цикл for, и поток был остановлен?
private int sum;
public int levelSum(TreeNode root, int level) {
sum = 0;
traverse(root, 1, level, 0);
return sum;
}
pubic void traverse(TreeNode root, int depth, int level, int sum){
if(root == null){
return;
}
if(depth == level){
return;
}
if(root.left != null) {
traverse(root.left, depth + 1, level, sum + root.left.val);
}
if(root.right != null) {
traverse(root.right, depth + 1, level, sum + root.right.val);
}
}
для инициализации За исключением, вы никогда не назначить 'sum' в' levelSum' рутина. И 'traverse' возвращает' void', поэтому у вас нет способа передать промежуточные значения 'sum' для резервного копирования стека вызовов. Вероятно, вы должны объединить эти две процедуры в одну функцию, которая возвращает 'int'. –
Я не вижу цикла 'for' в вашем опубликованном коде, поэтому я не могу ответить на ваш последний вопрос. – MikeCAT