64,652
社区成员
发帖
与我相关
我的任务
分享
void increment ()
{
if (node—>right!=0) // 如果有右子节点。 状况 <A>
{
node=node—>right ; // 就向右走
while(node—>left! ; )// 然后一直往左子树走到底
node=node—>left ; // 即是解答
}else { // 没有右子节点。 状况 <B>
base_ptr y=node—>parent ; // 找出父节点
while (node==y—>right){ // 如果现行节点本身是个右子节点
node=y ; // 就一直上溯,直到不为右子节点为止
y=y->parent ;
}
if (node—>right!=y) // 若此时的右子节点不等于此时的父节点
node=y ; // 状况 <C> 此时的父节点即为解答
// 否则此时的 node 为解答 状况 <D>
}