public object visit(NonEmptyNode nonEmptyNode) { if (x < nonEmptyNode.getKey()) { nonEmptyNode.setLeft((Node)nonEmptyNode.getLeft().accept(this)); } else if (x > nonEmptyNode.getKey()) { nonEmptyNode.setRight((Node)nonEmptyNode.getRight().accept(this)); } else { if (nonEmptyNode.getLeft().isEmpty()) { return(nonEmptyNode.getRight()); } else if (nonEmptyNode.getRight().isEmpty()) { return(nonEmptyNode.getLeft()); } Node temp = nonEmptyNode; nonEmptyNode = (NonEmptyNode)temp.getRight().accept(new NodeMinimumSearchingVisitor()); nonEmptyNode.setRight((Node)temp.getRight().accept(new NodeMinimumDeletionVisitor())); nonEmptyNode.setLeft(temp.getLeft()); } return(nonEmptyNode); }
public object visit(EmptyNode emptyNode) { NonEmptyNode newNode = (NonEmptyNode)BSTBuilder.getNodeFactory().createNonEmptyNode(newKey); newNode.setLeft(EmptyNode.getInstance()); newNode.setRight(EmptyNode.getInstance()); return(newNode); }
public object visit(NonEmptyNode nonEmptyNode) { if (nonEmptyNode.getLeft().isEmpty()) { return(nonEmptyNode.getRight()); } nonEmptyNode.setLeft((Node)nonEmptyNode.getLeft().accept(this)); return(nonEmptyNode); }
public object visit(NonEmptyNode nonEmptyNode) { if (newKey.Equals(nonEmptyNode.getKey())) { throw new KeyAlreadyExistException(newKey + " already exists"); } if (newKey < nonEmptyNode.getKey()) { nonEmptyNode.setLeft((NonEmptyNode)nonEmptyNode.getLeft().accept(this)); } else { nonEmptyNode.setRight((NonEmptyNode)nonEmptyNode.getRight().accept(this)); } return(nonEmptyNode); }