我有一個與BST打印有關的問題。我可以使用不同的樹形打印算法來橫向打印樹。但是,我總是從左到右打印樹。那麼有什麼方法可以顛倒打印樹嗎?我看到了關於使用XY的一些想法,但我不想在控制檯中這樣做,那麼是否有任何不同的方法來實現相同的事情?從上到下打印BST
編輯:例如,我有輸入作爲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;
}
沒有樹的實施有一個鏈接到他們的父節點?如果是這樣,我認爲應該可以做到這一點。如果沒有,那麼你可以運行一個正常的打印並將這些值存儲在一個數組中,然後向後遍歷它(儘管這樣做效率很低)。 – twain249 2012-03-25 23:17:24
「顛倒」是什麼意思? – 2012-03-25 23:17:52
是的,有左和右指針。 – Spincel 2012-03-25 23:18:18