[問題] [急]二元樹中序轉前序

看板C_and_CPP (C/C++)作者 (阿辰)時間16年前 (2010/06/09 22:53), 編輯推噓1(1017)
留言18則, 6人參與, 最新討論串1/1
( *[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)

06/09 22:57, , 1F
讀測資的時候把樹建出來,讀完再把樹用前序印出即可
06/09 22:57, 1F

06/09 22:58, , 2F
或許你可以考慮google查詢「中序轉前序」
06/09 22:58, 2F

06/09 23:10, , 3F
有沒有範例可以參考阿
06/09 23:10, 3F

06/10 00:30, , 4F
在資料結構課本有
06/10 00:30, 4F

06/10 00:32, , 5F
需要用stack存放operand跟operator
06/10 00:32, 5F

06/10 00:35, , 6F
要用二元樹!
06/10 00:35, 6F

06/10 00:36, , 7F
打錯~是要怎用
06/10 00:36, 7F

06/10 00:43, , 8F
中序的話,從堆疊拿出是放到右邊再左邊
06/10 00:43, 8F

06/10 00:52, , 9F
http://0rz.tw/FDeNE 原文word文件,google搜到的。
06/10 00:52, 9F

06/10 00:52, , 10F
唉= =""不太懂
06/10 00:52, 10F

06/10 00:57, , 11F
的確一般都是建好樹後的尋訪,甚少提到如何建樹,
06/10 00:57, 11F

06/10 00:57, , 12F
不過文件裡有給演算法和程式碼了。加油!
06/10 00:57, 12F

06/10 01:11, , 13F
時間點太剛好了, 是張老師的作業?
06/10 01:11, 13F

06/10 01:31, , 14F
你可以依照優先權大小依序加上括號, 然後最內層的括號
06/10 01:31, 14F

06/10 01:33, , 15F
先建小子樹, 再來是外層括號, 從下而上遞迴建樹
06/10 01:33, 15F

06/10 01:37, , 16F
其實只要有辦法加上括號, 簡單的調換運算元或運算子的
06/10 01:37, 16F

06/10 01:38, , 17F
位置, 像是產生前序的運算式, 都有助於建樹
06/10 01:38, 17F

06/10 01:40, , 18F
我已經懂了~感謝~快寫出來了
06/10 01:40, 18F
文章代碼(AID): #1C3whp_V (C_and_CPP)
文章代碼(AID): #1C3whp_V (C_and_CPP)