У меня есть вопрос, связанный с печатью BST. Я мог бы печатать дерево сбоку, используя другой алгоритм печати дерева. Тем не менее, я всегда печатаю дерево слева направо. Так есть ли способ распечатать дерево вверх дном? Я видел некоторое представление об использовании XY, но я не хочу делать это в консоли, так есть ли какой-либо другой метод для достижения того же?Печать BST сбоку сверху донизу
Редактировать: Например, у меня есть входы как L, M, R, T, S, G, Y, S, D, Е, С, А. С помощью симметричного обхода, я получил этот вход
Y
T
S
R
M
L
G
E
D
C
A
То, что я хочу, это то же самое, что вращать эту 90 градусов вправо, а L должен быть сверху, а затем остальные.
Редактировать 2: Вот код, использующий Order Level для печати дерева, однако я не уверен, как отобразить формат, который я хотел.
queue<TreeNode*> q;
while(node != NULL)
{
cout << node->data << " " << endl;
if (node->left)
q.push(node->left);
if(node->right)
q.push(node->right);
if(!q.empty())
{
node = q.front();
q.pop();
}
else
node = NULL;
}
ли реализация дерева есть ссылка на их родительские узлы? Если это так, я думаю, что это должно быть возможно. Если нет, вы можете запустить обычную печать и сохранить эти значения в массиве, а затем повернуть назад (это было бы довольно неэффективно). – twain249
Что вы подразумеваете под «перевернутым»? –
Да, есть указатели слева и справа. – Spincel