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)