| | | | | |

Parented Rotations

Non-parented code:

  Node * RotateLeft(Node * n)
  {
    if (0 == n || 0 == n->rchild_) return n;
    Node * p = n->rchild_;
    n->rchild_ = p->lchild_;
    p->lchild_ = n;  
    return p;
  }

Parented Code:

  Node * RotateLeft(Node * n)
  {
    if (0 == n || 0 == n->rchild_) return n;                    
    Node* p = n->rchild_;          
    n->rchild_ = p->lchild_;       
    if (0 != p->lchild_)           
    {
      p->lchild_->parent_ = n;     
    }
    p->parent_ = n->parent_;       
    if (0 != n->parent_)
    {
      if (n == n->parent_->lchild_)
      {
        n->parent_->lchild_ = p;   
      }
      else
      {
        n->parent_->rchild_ = p;   
      }
    }
    n->parent_ = p;
    p->lchild_ = n;                
    return p;                      
  }

| | Top of Page | 14. BST Iterators - 14 of 41