为了账号安全,请及时绑定邮箱和手机立即绑定

二叉树的数组实现

如果删除的结点不是叶子结点,那该节点的子孙应该也需要置为0吧 

正在回答

1 回答

bool SqBiTree::DeleteNode(int nodeIndex, int *pNode)
{
	if (nodeIndex < 0 || nodeIndex > iSize - 1)
	{
		return false;
	}

	if (pBuffer[nodeIndex] == 0)
	{
		return false;
	}

	*pNode = pBuffer[nodeIndex];
	pBuffer[nodeIndex] = 0;

	int lChildIndex = 2 * nodeIndex + 1; 
	while (lChildIndex < iSize)
	{
		pBuffer[lChildIndex] = 0;
		lChildIndex = 2 * lChildIndex + 1;
	}

	int rChildIndex = 2 * nodeIndex + 2;
	while (rChildIndex < iSize)
	{
		pBuffer[rChildIndex] = 0;
		rChildIndex = 2 * rChildIndex + 2;
	}

	return true;
}


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

二叉树的数组实现

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信