У меня есть метод для печати содержимого дерева:
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....
Я просто немного заблудился с рекурсией. Спасибо!
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);
}
Попробуйте!
Других решений пока нет …