Esempio n. 1
0
        public void Insert(long dValue)
        {
            var currNode = root;
            var newItem  = new _234DataItem(dValue);

            while (true)
            {
                if (currNode.IsFull())
                {
                    // Split this node
                    Split(currNode);

                    currNode = GetNextChild(currNode.GetParent(), dValue);
                }
                else if (currNode.IsLeaf()) // Insert here
                {
                    break;
                }
                else // go deeper - curNode is not full and is not leaf
                {
                    currNode = GetNextChild(currNode, dValue);
                }
            }

            currNode.InsertItem(newItem);
        }
Esempio n. 2
0
        public int InsertItem(_234DataItem newItem)
        {
            numItems++;
            long newKey = newItem.dData;

            for (int i = ORDER - 2; i >= 0; i--)
            {
                if (itemArray[i] == null)
                {
                    continue;
                }
                else
                {
                    var thisKey = itemArray[i].dData;

                    if (newKey < thisKey)
                    {
                        itemArray[i + 1] = itemArray[i];
                    }
                    else
                    {
                        itemArray[i + 1] = newItem;
                        return(i + 1);
                    }
                }
            }

            itemArray[0] = newItem;
            return(0);
        }