Exemple #1
0
        public void insert(string dValue)
        {
            Node234  curNode  = root;
            DataItem tempItem = new DataItem(dValue);
            //Check to see if value already exists
            Node234 found = find(dValue);

            if (found != null)
            {
                DataItem it = found.getItem(found.findItem(dValue));
                if (it != null)
                {
                    it.occurences++;
                    counter++;
                    return;
                }
                else
                {
                    throw new Exception("Could not find string occurence for: " + dValue);
                }
            }
            while (true)
            {
                if (curNode.isFull())
                {
                    split(curNode);
                    curNode = curNode.getParent();
                    curNode = getNextChild(curNode, dValue);
                }
                else if (curNode.isLeaf())
                {
                    break;
                }
                else
                {
                    curNode = getNextChild(curNode, dValue);
                }
            }

            curNode.insertItem(tempItem);
            counter++;
        }
Exemple #2
0
        private void split(Node234 thisNode)
        {
            DataItem itemB, itemC;
            Node234  parent, child2, child3;
            int      itemIndex;

            itemC  = thisNode.removeItem();
            itemB  = thisNode.removeItem();
            child2 = thisNode.disconnectChild(2);
            child3 = thisNode.disconnectChild(3);

            Node234 newRight = new Node234();

            if (thisNode == root)
            {
                root   = new Node234();
                parent = root;
                root.connectChild(0, thisNode);
            }
            else
            {
                parent = thisNode.getParent();
            }

            itemIndex = parent.insertItem(itemB);
            int n = parent.getNumItems();

            for (int j = n - 1; j > itemIndex; j--)
            {
                Node234 temp = parent.disconnectChild(j);
                parent.connectChild(j + 1, temp);
            }

            parent.connectChild(itemIndex + 1, newRight);

            newRight.insertItem(itemC);
            newRight.connectChild(0, child2);
            newRight.connectChild(1, child3);
        }