树内容的格式化输出 - 前序遍历
Posted
技术标签:
【中文标题】树内容的格式化输出 - 前序遍历【英文标题】:Formatting output of tree contents - Preorder traversal 【发布时间】:2012-12-14 08:26:57 【问题描述】:我有一个打印树内容的方法:
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....
我只是对递归有点迷失了。谢谢!
【问题讨论】:
您可以传递一个depth
变量,该变量在每次调用时递增,并打印等于depth
的空格数。请参阅此示例,它打印目录printdir.c ..您需要在c++
中执行此操作。
【参考方案1】:
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);
试试看!!
【讨论】:
欢迎!!...看看printdic.c
...因为更好的解决方案是可能的。 c++
中必须有一些 %*s
等价物。以上是关于树内容的格式化输出 - 前序遍历的主要内容,如果未能解决你的问题,请参考以下文章