/** * removes edge between this and right; removes edge between newRight and its parent; creates new * edge between this and newRight */ public void linkRight(BSTNode newRight) { if (getRight() != newRight) { if (getRight() != null) { // remove edge between this and right unlinkRight(); } if (newRight != null) { if (newRight.getParent() != null) { // remove edge between newRight and its parent newRight.unlinkParent(); } // create new edge between this and newRight newRight.setParent(this); } setRight(newRight); } }