看板 C_and_CPP 關於我們 聯絡資訊
我想透過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
Yshuan:1.縮排小錯 2.你得到是末端leaf 想必要再做comp(r->k, k) 11/15 03:18
Yshuan:就想法上 有重複的片段了 只單看這個function是感覺沒問題 11/15 03:18
Yshuan:3. 若root==NULL 會有segmentation fault 4. key重複問題 11/15 03:20