Переменная не изменилась после вызова в функции [closed]

Почему 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);
        }
    }

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *