最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

二叉樹數(shù)組實(shí)現(xiàn)中刪除結(jié)點(diǎn)函數(shù)的問題

萬一刪除的不是樹葉而是中間的某一個(gè)內(nèi)點(diǎn),這樣刪除結(jié)點(diǎn)不用把其整個(gè)子樹給刪除掉嗎?

正在回答

4 回答

在Tree類中定義一個(gè)void DiGui(int nodeIndex);方法來遞歸刪除左右節(jié)點(diǎn):

void Tree::DiGui(int nodeIndex)
{
?int currentNodeIndex = nodeIndex;
?if(nodeIndex * 2 + 1 < m_iSize)
?{
??nodeIndex = nodeIndex * 2 + 1;
??m_pTree[nodeIndex] = 0;
??DiGui(nodeIndex);
?}
?if(currentNodeIndex * 2 + 2 < m_iSize)
?{
??currentNodeIndex = currentNodeIndex * 2 + 2;
??m_pTree[currentNodeIndex] = 0;
??DiGui(currentNodeIndex);
?}
}

在bool DeleteNode(int nodeIndex, int *pNode);方法中實(shí)現(xiàn):

bool Tree::DeleteNode(int nodeIndex, int *pNode)
{
?if (nodeIndex < 0 || nodeIndex >= m_iSize)
?{
??return false;
?}
?if (m_pTree[nodeIndex] == 0)
?{
??return false;
?}
?*pNode = m_pTree[nodeIndex];
?m_pTree[nodeIndex] = 0;
?DiGui(nodeIndex);
?return true;
}

1 回復(fù) 有任何疑惑可以回復(fù)我~

嗯,支持哈。。。我直接在DeleteNode()函數(shù)中加了個(gè)遞歸去做了。

//刪除結(jié)點(diǎn)
bool Tree::DeleteNode(int nodeIndex, int &node)
{
?if (nodeIndex < 1 || nodeIndex > m_iSize)
?{
??return false; //位置異常
?}
?if (NODENULL == m_pTree[nodeIndex])
?{
??return false; //結(jié)點(diǎn)不存在
?}
?node = m_pTree[nodeIndex];
?m_pTree[nodeIndex] = NODENULL;
?//將該結(jié)點(diǎn)的子結(jié)點(diǎn)都置空,遞歸刪除左孩子和右孩子
?int temp = 0;
?DeleteNode(nodeIndex * 2, temp);
?DeleteNode(nodeIndex * 2 + 1, temp);

?return true;
}

0 回復(fù) 有任何疑惑可以回復(fù)我~

那數(shù)組中不應(yīng)該也要考慮這種情況嗎

0 回復(fù) 有任何疑惑可以回復(fù)我~

在刪除節(jié)點(diǎn)時(shí),如果二叉樹是以鏈表的方式存儲(chǔ)的,那么刪除結(jié)點(diǎn)將一起把該結(jié)點(diǎn)以及結(jié)點(diǎn)的整個(gè)子樹全部刪除。

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

二叉樹數(shù)組實(shí)現(xiàn)中刪除結(jié)點(diǎn)函數(shù)的問題

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)