[問題] binary search

看板C_and_CPP (C/C++)作者 (honamida)時間14年前 (2011/11/15 02:14), 編輯推噓1(102)
留言3則, 1人參與, 最新討論串1/1
我想透過binary search 找出正確的節點 然後把data 插入 binary search tree 裡 這是我拙劣的程式碼@@~ treepointer* travel(treepointer *root, int k) { if( k < root->key){ if(root->left == NULL) // 左節點空了 又想插入的k 小於 parent return root; else return travel(root->left,k); } if( k > root->key){ if(root->right == NULL)// 右節點空了 想插入的k 大於parent return root; else return travel(root->right,k); } } 我的想法是從原有的 BST 的ROOT開始 要是要讀的序列數比ROOT小 就往左邊結點移到下一個SUBTREE 然後繼續做一樣的事 直到如果讀的序列數小於parent 又左邊已經是null 沒有下個結點了 所以這個數應該要插在這個NULL的地方 所以再插入前都用travel跑一次應該要插入在哪個節點 再用linklist 指過去 不過會遇到問題是 要讀的序列像 5 7 9 3 1 8 應該要是 5 3 7 1 9 8 就變成 8 會在 9 的右邊 @@ 如果自己在改一下序列的數字總會有類似的問題 想請問一下是不是我的TRAVEL的想法有錯 還是我程式達不到我想要做的? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.118.30

11/15 03:18, , 1F
1.縮排小錯 2.你得到是末端leaf 想必要再做comp(r->k, k)
11/15 03:18, 1F

11/15 03:18, , 2F
就想法上 有重複的片段了 只單看這個function是感覺沒問題
11/15 03:18, 2F

11/15 03:20, , 3F
3. 若root==NULL 會有segmentation fault 4. key重複問題
11/15 03:20, 3F
文章代碼(AID): #1EmLgB0U (C_and_CPP)
文章代碼(AID): #1EmLgB0U (C_and_CPP)