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); } return(nonEmptyNode.getLeft().accept(this)); }
public object visit(NonEmptyNode nonEmptyNode) { int count = 0; if (condition.apply(nonEmptyNode)) { count = 1; } return(count + (int)nonEmptyNode.getLeft().accept(this) + (int)nonEmptyNode.getRight().accept(this)); }
public object visit(NonEmptyNode nonEmptyNode) { int numberOfLeaves = (int)nonEmptyNode.getLeft().accept(this) + (int)nonEmptyNode.getRight().accept(this); if (numberOfLeaves == 0) { return(1); } return(numberOfLeaves); }
public object visit(NonEmptyNode nonEmptyNode) { if (currentLevel < levelBeingCountedAt) { this.currentLevel++; int left = (int)nonEmptyNode.getLeft().accept(this); int right = (int)nonEmptyNode.getRight().accept(this); currentLevel--; return(left + right); } return(1); }
public object visit(NonEmptyNode nonEmptyNode) { if (nonEmptyNode.getKey() == x) { return(currentLengthPath); } currentLengthPath++; int resultFromLeft = (int)nonEmptyNode.getLeft().accept(this); int resultFromRight = (int)nonEmptyNode.getRight().accept(this); currentLengthPath--; return(resultFromLeft != -1 ? resultFromLeft : resultFromRight); }
public object visit(NonEmptyNode nonEmptyNode) { if (x == nonEmptyNode.getKey()) { return(nonEmptyNode); } if (x < nonEmptyNode.getKey()) { return(nonEmptyNode.getLeft().accept(this)); } else { return(nonEmptyNode.getRight().accept(this)); } }
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); }
public object visit(NonEmptyNode nonEmptyNode) { //tìm chiều cao của cây con trái và cây con phải, //cây con nào có chiều cao lớn hơn thì lấy giá trị đó cộng thêm 1(1 là chiều cao của nút gốc) return(1 + Math.Max((int)nonEmptyNode.getLeft().accept(this), (int)nonEmptyNode.getRight().accept(this))); }