Форматирование вывода содержимого дерева — обход по предварительному заказу

У меня есть метод для печати содержимого дерева:

void RedBlackTree::printPreorder(RedBlackNode *root){
if(root == NULL)
return;
cout << root->data << endl;
printInorder(root->left);
printInorder(root->right);
}

Содержимое моего дерева читается правильно, но я хочу отформатировать дерево так, чтобы оно выглядело лучше. Прямо сейчас для дерева:

    c
/ \
b   k
/   / \
a   d   m

Содержание печати:

c
b
a
k
d
m

Но я бы хотел добавить отступ, чтобы он гласил:

c
b
a
k
d
m

Формат будет таким:

Root
Left
LeftLeft
LeftRight
Right
RightLeft
RightRight

etc....

Я просто немного заблудился с рекурсией. Спасибо!

0

Решение

void RedBlackTree::printPreorder(RedBlackNode *root, int depth){
if(root == NULL)
return;
for(int i=0; i<=depth; i++)
cout <<" ";

depth++;
cout << root->data << endl;
printInorder(root->left, depth);
printInorder(root->right, depth);
}

Попробуйте!

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]