從堆中分配內存并初始化每個數據為0可以這樣:m_pTree = new int[size](); 這是C++11的新特性!~
2016-11-07
已采納回答 / king925
delete的操作,實際上可以看做是對樹的對象中的元素進行的操作,即是對node的操作。在tree類中定義的操作,應該是對整個類的操作,如果將delete操作設為tree的函數,那么還需要通過類的對象再調用這個對象的元素,相當于多增加了一步操作。通過在node中實現,可以簡化步驟,便于理解。
2016-11-05
如果刪除根節點要把后面的子節點也刪掉吧,使用遞歸:int leftPos = nodeIndex*2 + 1;
int rightPos = nodeIndex*2 + 2;
int temp = 0;
if(leftPos <= m_iSize && m_pTree[leftPos] != 0){
DeleteNode(leftPos,&temp);
}
if(rightPos <= m_iSize && m_pTree[rightPos] != 0){
DeleteNode(rightPos,&temp);
}
int rightPos = nodeIndex*2 + 2;
int temp = 0;
if(leftPos <= m_iSize && m_pTree[leftPos] != 0){
DeleteNode(leftPos,&temp);
}
if(rightPos <= m_iSize && m_pTree[rightPos] != 0){
DeleteNode(rightPos,&temp);
}
2016-10-15