作者Achen2211 (阿辰)
看板C_and_CPP
標題[問題] [急]二元樹中序轉前序
時間Wed Jun 9 22:53:37 2010
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 )
( 未必需要依照此格式,文章條理清楚即可 )
遇到的問題: (題意請描述清楚)
二元樹中序轉前序怎轉?
希望得到的正確結果:
例如我輸入a+b-c(中序)
要轉成前序-+abc
要print出中序和前序
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
Visual C++
有問題的code: (請善用置底文標色功能)
#include <stdio.h>
struct node
{
int data;
node *Rchild;
node *Lchild;
};
void inorder(node *ptr)
{
if(ptr){
inorder(ptr->Lchild);
printf("%d",ptr->data);
inorder(ptr->Rchild);
}
}
void preorder(node *ptr)
{
if(ptr){
printf("%d",ptr->data);
preorder(ptr->Lchild);
preorder(ptr->Rchild);
}
}
我大概寫前序和中序的程式碼~但是我不懂要如何轉= =?
運算式由我們自己打進去..要怎把data讀進去...讓運算元和運算子能先讀入中序然後再轉前序
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.49.111
※ 編輯: Achen2211 來自: 114.42.49.111 (06/09 22:55)
推 nowar100:讀測資的時候把樹建出來,讀完再把樹用前序印出即可 06/09 22:57
→ james732:或許你可以考慮google查詢「中序轉前序」 06/09 22:58
→ Achen2211:有沒有範例可以參考阿 06/09 23:10
→ sunneo:在資料結構課本有 06/10 00:30
→ sunneo:需要用stack存放operand跟operator 06/10 00:32
→ Achen2211:要用二元樹! 06/10 00:35
→ Achen2211:打錯~是要怎用 06/10 00:36
→ sunneo:中序的話,從堆疊拿出是放到右邊再左邊 06/10 00:43
→ Achen2211:唉= =""不太懂 06/10 00:52
→ bleed1979:的確一般都是建好樹後的尋訪,甚少提到如何建樹, 06/10 00:57
→ bleed1979:不過文件裡有給演算法和程式碼了。加油! 06/10 00:57
→ loveme00835:時間點太剛好了, 是張老師的作業? 06/10 01:11
→ loveme00835:你可以依照優先權大小依序加上括號, 然後最內層的括號 06/10 01:31
→ loveme00835:先建小子樹, 再來是外層括號, 從下而上遞迴建樹 06/10 01:33
→ loveme00835:其實只要有辦法加上括號, 簡單的調換運算元或運算子的 06/10 01:37
→ loveme00835:位置, 像是產生前序的運算式, 都有助於建樹 06/10 01:38
→ Achen2211:我已經懂了~感謝~快寫出來了 06/10 01:40