看板 C_and_CPP 關於我們 聯絡資訊
( *[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
bleed1979:http://0rz.tw/FDeNE 原文word文件,google搜到的。 06/10 00:52
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