这是我的继任者功能:
int
BalancedTree::successor( TreeNode *node ) // successor is the left-most child of its right subtree,
{
TreeNode *tmp = node;
int successorVal = -1;
tmp = tmp->m_RChild;
if( NULL != tmp )
{
while( NULL != tmp->m_LChild )
tmp = tmp->m_LChild;
// now at left most child of right subtree
successorVal = tmp->m_nodeData;
}
return successorVal;
} // successor()
我的导师给了我们一个充满随机数据的文件。我将所有这些数据放入树中,insert 方法有效,但是一旦 remove 方法启动,后继函数在某个时候返回与我正在寻找后继节点的节点相同的值。这不应该发生正确吗?我的后继功能正确吗?如果您想查看删除方法,只需提及它。