[問題] 二元樹插入節點

看板C_and_CPP (C/C++)作者 (Lizst)時間16年前 (2010/06/12 16:29), 編輯推噓1(106)
留言7則, 2人參與, 最新討論串1/2 (看更多)
遇到的問題: 插入節點的基本架構已經寫好了, 這是我拙劣的code http://gist.github.com/435574 input檔的內容如下: 1,10,0,0 2,20,1,0,3,40,1,1 4,30,2,0,5,50,3,0,6,60,3,1 7,70,5,1 這四行數字代表右圖的tree 每行代表tree的每個level 每4個數代表一個node 第一個數是id,第二個數是data,第三個數是parent的id 第四個數代表自己是左子樹(0)或是右子樹(1) 比方node 6, id是6,data是60,parent id是3,是右子樹 所以在input檔裡的第三行(level 3)的第四組數字就是6,60,3,1 不過, 小弟不知道應該加什麼條件才能在正確的地方插入節點 目前得到的樹狀圖就是個剪刀刃形狀 (是有想到利用parent 的id 來做插入, 但是不知道如何指向父節點) 希望得到的的樹狀圖如下 10 / \ 20 40 / / \ 30 50 60 \ 70 插入節點的順序是 10, 20, 40, 30, 50, 60 ,70 這是錯誤的執行結果: prefix:10 20 30 50 40 60 70 infix:50 30 20 10 40 60 70 postfix:50 30 20 70 60 40 10 希望得到的正確結果: prefix:10 20 30 40 50 70 60 infix:30 20 10 50 70 40 60 postfix:30 20 70 50 60 40 10 希望高人指點, 謝謝^^" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.187.61.89 ※ 編輯: Lizstlin 來自: 203.187.61.89 (06/12 16:45)

06/12 16:58, , 1F
錯的地方 : 只要第四個數字是0, 新的節點就加在樹的「
06/12 16:58, 1F

06/12 17:00, , 2F
最左端」, 而沒有考慮該接到哪個節點下面, 第三個數字
06/12 17:00, 2F

06/12 17:02, , 3F
是要你做搜尋的功能, 搜尋到再把子節點接上去, 既然節
06/12 17:02, 3F

06/12 17:04, , 4F
點資料是一層一層給, 你可以把已經配備好的節點位址存
06/12 17:04, 4F

06/12 17:05, , 5F
在陣列裡, 作個排序的功能, 搜尋就不用整個樹都跑一遍
06/12 17:05, 5F

06/12 17:09, , 6F
補充 : 可以對 id 作排序, 搜尋再用binary search
06/12 17:09, 6F

06/12 18:10, , 7F
嗯, 大致有個概念了. 謝謝^^
06/12 18:10, 7F
文章代碼(AID): #1C4qLdXk (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1C4qLdXk (C_and_CPP)