我想創建一個AVL樹,我正在使用指針的動態數組來跟蹤哪些節點受插入的影響。我的問題是如果刪除動態數組將刪除內容代碼還沒有完成,但我認爲它會給你一個我的意思的想法。如果它不工作,那麼我應該怎麼做呢?在此先感謝。刪除指針陣列
treenode *newnode,**roadnodes,*parent ;
int x=(int)log(numberofnodes)+2,l=0 ;
bool *rightorleft,flag=true ;
newnode=new treenode ;
roadnodes=new treenode*[x] ;
rightorleft=new bool[x] ;
newnode->id=i ;
newnode->hl=0;
newnode->hr=0;
newnode->hm=0;
newnode->left=NULL;
newnode->right=NULL ;
if(head==NULL)
{
delete[] roadnodes ;
delete[] rightorleft ;
numberofnodes++ ;
head=newnode ;
return true ;
}
parent=head ;
while(flag)
{
roadnodes[l]=parent ;
if(parent->id>i)
{
if(parent->left)
parent=parent->left ;
else
{
flag=false ;
parent->left=newnode ;
}
rightorleft[l]=true ;
l++ ;
}
else
{
if(parent->right)
parent=parent->right ;
else
{
flag=false ;
parent->right=newnode ;
}
rightorleft[l]=false ;
l++ ;
}
}
return true ;
這個問題剛剛消失,如果你使用智能指針代替人工內存管理.. –
'的std ::的unique_ptr'和'的std ::向量<性病::的unique_ptr >',以避免任何泄漏。 –
Jarod42
'rightorleft [l] = true'就像那些煩人的人,當你問「咖啡或茶?」時,他們會回答「是」。使用'枚舉方向{左,右};'或類似的東西。 – molbdnilo