/**后继结点*/
- (Node *)successorNode:(Node *)node {
if (node == nil) {
return nil;
}
Node *pNode = node.right;
//前驱结点在右子树里 (right.left.left.left......)
if (pNode != nil) {
while (pNode.left != nil) {
pNode = pNode.left;
}
return pNode;
}
while (node.parent != nil && node == node.parent.right) {
node = node.parent;
}
//node.parent == nil
//node == node.parent.left
return node.parent;
}