Для каждой ветви дерева записать номер вложенности данной ветви

Есть дерево (вложенный объект):

const three = {
  next: [
    {
      next: null,
    },
    {
      next: null,
    },
    {
      next: null,
    },
    {
      next: [
        {
          next: null,
        },
        {
          next: null,
        },
      ],
    },
  ],
}

Необходимо записать номер вложенности данной ветви:

getNestingLevelThree(three) -->

{
  valueNode: 1,
  next: [
    {
      valueNode: 2,
      next: null,
    },
    {
      valueNode: 2,
      next: null,
    },
    {
      valueNode: 2,
      next: null,
    },
    {
      valueNode: 2,
      next: [
        {
          valueNode: 3,
          next: null,
        },
        {
          valueNode: 3,
          next: null,
        },
      ],
    },
  ],
}

Примеры:

 // Аргумент функции:
 {
  next: [
    {
      next: null,
    },
    {
      next: null,
    },
    {
      next: null,
    },
    {
      next: [
        {
          next: null,
        },
        {
          next: null,
        },
      ],
    },
  ],
}

//  Возвращаемое значение функции:
{
  valueNode: 1,
  next: [
    {
      valueNode: 2,
      next: null,
    },
    {
      valueNode: 2,
      next: null,
    },
    {
      valueNode: 2,
      next: null,
    },
    {
      valueNode: 2,
      next: [
        {
          valueNode: 3,
          next: null,
        },
        {
          valueNode: 3,
          next: null,
        },
      ],
    },
  ],
}
// Аргумент функции:
{
  next: [
    {
      next: [
        {
          next: null
        }
      ]
    }
  ]
}

// Возвращаемое значение функции:

{
  valueNode: 1,
  next: [
    {
      valueNode: 2,
      next: [
        {
          valueNode: 3,
          next: null
        }
      ]
    }
  ]
}

P.s. результаты функции и тестовых данных сравниваются с помощью результата оборачивания объектов в JSON.stringify, поэтому соблюдение порядка полей важно.