看板 C_and_CPP 關於我們 聯絡資訊
Recursion程式碼大概長像這樣吧 大概刻了一下. 右子樹作法類似 bool DeleteLeftNode: 刪除左子樹最小node則傳回true, 否則false(root沒有左子樹) typedef struct { int key; NODE* left; NODE* right; }NODE; bool DeleteLeftNode(NODE* root, int level) { if ( root->left != NULL ) return DeleteLeftNode(r->left , level+1); else { if(level ==0) return false; delete root; printf("Node deleted at level %d", level); return true; } } void main ( void ) { NODE* root = GetTreeRoot(); DeleteLeftNode(root,0); } ※ 引述《bwtalk (是黑是白)》之銘言: : 其實我要問的不完全是code而是方法 (不知道有沒有違反版規 囧) : --以下是問題-- : 要刪除binary search tree在其中一個節點 : 是找左子樹的最大或右子樹的最小那個node來代替將被刪除的節點 : 如果要用遞迴的做法來完成 : 該怎麼寫才能算是遞迴呢? : (我會寫非遞迴的方式,超麻煩Orz) : ---- : 如果有範例CODE或虛擬碼的話真是感激不盡!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 119.77.223.81 ※ 編輯: mingtai1 來自: 119.77.223.81 (11/19 04:41)