Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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));
     }
 }
Exemplo n.º 3
0
        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)
        {
            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);
        }