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