Вы можете создать карту ha sh, чтобы указать уровень дерева, на котором вы находитесь, в соответствии со значениями на этом уровне дерева. Например:
std::map<unsigned, std::vector<unsigned>> hash;
Затем вы можете go через ваше дерево и заполнить карту так, чтобы ваша карта выглядела так:
hash[0] = { 5 };
hash[1] = { 2, 9 };
hash[2] = { 0, 3, 7, 12 };
Возможно, вам понадобится временный переменная счетчика, чтобы знать, какой уровень глубины вы находитесь в вашем дереве, и обновлять его соответствующим образом. Используйте этот временный счетчик индексов, чтобы указать ключ карты, и используйте его, чтобы заполнить строки вашего дерева, сохраняя значения в векторе, а затем оттуда вы можете напечатать эту карту на каждом уровне ключа ...
for (unsigned i = 0; i < hash.size(); i++ ) { // each level of tree
for (auto& v : hash[i] ) { // each element in that vector
std::cout << v << " ";
}
std::cout << '\n';
}
Нечто подобное может быть одним из возможных решений ...