關于DeleteNode的一些疑問
void DeleteNode(){
if (this->pLChild != NULL){
this->pLChild->DeleteNode();
}
if (this->pRChild != NULL){
this->pRChild->DeleteNode();
}
if (this->pParent != NULL){
if (this->pParent->pLChild == this){
this==NULL;
}
if (this->pParent->pRChild == this){
this == NULL;
}
}
delete this;
}
//第三步的父節點判空? 完全可以改成這樣啊
if (this->pParent != NULL){
this == NULL;
}
2020-10-31
this = NULL與this->pParent->pLChild != NULL發生沖突,相當于this->pParent->pLChild指向了空指針,發生異常
2020-10-31
好問題
2018-07-21
這樣是有問題的,本來只刪除左節點(該節點父節點的左節點),這樣會將右節點也一起刪除的!
2018-06-17
代碼被吞了花括號里邊是
this->pParent->pLChild = NULL;
pRChild同理
2018-06-17
首先你上面那段代碼就不是老師的源碼,老師那一部分的代碼是
其次this == NULL;這個語句就很令人費解,我姑且先認為是this = NULL;,現在的目的是把父節點中的pLChild或pRChild的“數據”改為NULL,那你把自己的指針變為空干嗎?父節點的Child指針還是指向該節點啊,難道還會跟著變嗎?