我想從二叉搜索樹中刪除節點。在這個功能中有3個參數。其中之一是樹,其他是開始節點和結束節點。我想刪除開始節點和結束節點之間的節點。 P.S:用戶寫入起始節點和結束節點,我們將它們用作參數。刪除二進制搜索樹中的節點C
這是我寫的代碼:
node * removeReviewsBetween(node * tree,double start,double end){
node * newNode;
if(tree==NULL){
return NULL;
}
if(start< tree->scoreNumber){
tree->left=removeReviewsBetween(tree->left,start,end);
}
else if(start > tree->scoreNumber){
tree->right=removeReviewsBetween(tree->right,start,end);
}
else{
if(tree->right && tree->left){
newNode=findMin(tree->right);
tree->scoreNumber=newNode->scoreNumber;
tree->right=removeReviewsBetween(tree->left,tree->scoreNumber,end);
}
else{
newNode=tree;
if(tree->left==NULL){
tree=tree->right;
}
else if(tree->right==NULL){
tree=tree->left;
}
free(newNode);
}
return tree;
}
}
我寫成才,但它正確好好嘗試的工作。請給我一些建議
請告訴我們究竟是行不通的。也向我們展示你的節點struct – 2014-11-22 15:16:22
@PhilippMurry它不檢查樹是否有開始和結束節點。 – user3142663 2014-11-22 17:10:27