Beispiel #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);
        }
Beispiel #2
0
        public override void traverse(Node node)
        {
            if (node.isEmpty())
            {
                return;
            }

            traverse(node.getLeft());
            traverse(node.getRight());
            action.run(node);
        }
 public static bool havingOnlyOneChild(Node node)
 {
     if ((node.getRight().isEmpty() && !node.getLeft().isEmpty()) || (node.getLeft().isEmpty() && !node.getRight().isEmpty()))
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
 public static bool havingBothChildren(Node node)
 {
     if (!node.getRight().isEmpty() && !node.getLeft().isEmpty())
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }