作者calqlus (東方一隻鹿)
看板C_and_CPP
標題[問題] 樹。
時間Mon Aug 23 18:13:20 2010
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 )
( 未必需要依照此格式,文章條理清楚即可 )
遇到的問題: (題意請描述清楚)
原程式 左邊放小數 右邊放大數
修改成 每輸入一個數字,就用pretrav() 秀出樹的狀態
希望得到的正確結果:
3
================
node left right
3 -1 -1
================
4
================
node left right
3 -1 4
4 -1 -1
=================
_
程式跑出來的錯誤結果:
3
================
node left right
3 -1 -1
================
4
================
node left right
3 -1 4
4 =================
_
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
dev_c++
有問題的code: (請善用置底文標色功能)
http://nopa.csie.org/d8b42
補充說明:
一開始的程式是所有數字輸入完後 CTRL+z 在ENTER
就可以完整找出所有結點
但這個程式 只有動到pretrav()另外複製 和 int main() 最後那幾行
那個多出來的數字我也不太曉得怎麼來的
故意註解 55行 printf("%d ", tree->info); // visit the root
也還是跑出那種多出的數字
先問到這吧
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.171.96.206
※ 編輯: calqlus 來自: 118.171.96.206 (08/23 18:13)
→ loveme00835:pretrav_show 裡面應該是遞迴呼叫自己, 而不是呼叫 08/23 20:00
→ loveme00835:pretrav, 縮排要加強一下, else if 的地方很亂, 沒有 08/23 20:00
→ loveme00835:表達階層的關係 08/23 20:01
→ calqlus:我是知道遞迴是呼叫自己啊...所以才問怎麼遞迴函式自己卻 08/24 20:51
→ calqlus:總是印不出我想要的...看來好像很多人會看得霧煞煞 08/24 20:51
→ calqlus:我還是乖乖用堆疊去解好了= = 稍後在整理一下程式碼吧 08/24 20:52
→ calqlus:之後有問題我再重發吧 08/24 20:53
噓 loveme00835:問題就在你pretrav_show根本沒有沒有遞迴呼叫自己 08/24 21:11
噓 loveme00835:你真的懂你的程式碼嗎? 08/24 21:13
→ calqlus:我發現我眼殘= = 我本來就想要讓他自己呼叫 結果單純複製 08/24 23:40
→ calqlus:就忘了裡面忘了改 好吧抱歉沒注意 也難怪沒人想回 08/24 23:42