Почему oddLevelSum и evenLevelSum не изменяются после вызова в MaxSumNonAdjacentUtil? Когда я отлаживаю этот код, в конце вызова функции oddLevelSum и evenLevelSum вычисляются, как и ожидалось, но когда я перехожу к return Math.Max(oddLevelSum, evenLevelSum);
они оба равны 0.
public int MaxSumNonAdjacentLevels(BinaryTree bst)
{
Node root = bst.Root;
int oddLevelSum = 0;
int evenLevelSum = 0;
MaxSumNonAdjacentLevelUtil(root, oddLevelSum, evenLevelSum, 1);
return Math.Max(oddLevelSum, evenLevelSum);
}
private void MaxSumNonAdjacentLevelUtil(Node cur, int sumOdd, int sumEven, int status)
{
if (status == 0) //first level being 1, odd to 1, even to 0
{
if (cur == null)
{
Console.WriteLine("even: " + sumEven);
return;
}
sumEven += cur.value;
MaxSumNonAdjacentLevelUtil(cur.Left, sumOdd, sumEven, 1);
MaxSumNonAdjacentLevelUtil(cur.Right, sumOdd, sumEven, 1);
}
else
{//odd level
if (cur == null)
{
Console.WriteLine("odd: " + sumOdd);
return;
}
sumOdd += cur.value;
MaxSumNonAdjacentLevelUtil(cur.Left, sumOdd, sumEven, 0);
MaxSumNonAdjacentLevelUtil(cur.Right, sumOdd, sumEven, 0);
}
}