【发布时间】:2012-03-25 23:12:59
【问题描述】:
我有一个关于 BST 打印的问题。我可以使用不同的树打印算法横向打印树。但是,我总是从左到右打印树。那么有没有办法把树倒过来打印呢?我看到了一些关于使用 XY 的想法,但我不想在控制台中这样做,那么有什么不同的方法可以实现同样的事情吗?
编辑:例如,我的输入为 L、M、R、T、S、G、Y、S、D、E、C、A。使用中序遍历,我得到了这个输入
Y
T
S
R
M
L
G
E
D
C
A
我想要的就是向右旋转 90 度,L 应该在上面,然后是其他的。
编辑 2:这是使用 Level Order 打印树的代码,但是,我不确定如何将要显示的格式设置为我想要的。
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;
}
【问题讨论】:
-
树的实现是否有指向其父节点的链接?如果是这样,我认为应该可以做到这一点。如果没有,那么您可以运行普通打印并将这些值存储在一个数组中,然后向后遍历它(虽然这将非常低效)。
-
“颠倒”是什么意思?
-
是的,有左右指针。
-
倒置意味着像实际的树一样从上到下打印树。
-
@Spincel 我想知道是否有指向节点的
parent的指针,就像我做child->parent一样,我是否让节点1 级更接近根节点。
标签: c++ stl binary-search-tree