Ejemplo n.º 1
0
        /// <summary>
        /// Вставка элемента в кучу
        /// </summary>
        /// <param name="element">Элемента</param>
        public void Insert(ComparableElement <TKey, TValue> element)
        {
            if (Count == _heap.Length)
            {
                throw new InvalidOperationException("Too many elements in heap. Try to extract elment before");
            }

            _heap[Count] = element;
            HeapifyUp();
            Count++;
        }
Ejemplo n.º 2
0
            /// <summary>
            /// Вставка элемента в кучу
            /// </summary>
            /// <param name="element">Элемента</param>
            private void Insert(ComparableElement <int, VertextExt> element)
            {
                if (Count == Heap.Length)
                {
                    throw new InvalidOperationException("Too many elements in heap. Try to extract elment before");
                }

                Heap[Count] = element;
                _vertexesIndexes[element.Value.Vertex.Id] = Count;
                HeapifyUp();
                Count++;
            }
Ejemplo n.º 3
0
        /// <summary>
        /// Вставить элемент в дерево
        /// </summary>
        /// <param name="element">Элемент</param>
        public void Insert(ComparableElement <TKey, TValue> element)
        {
            if (element == null)
            {
                throw new ArgumentNullException(nameof(element));
            }

            Node <TKey, TValue> prev = null;
            var curr = _root;

            while (curr != null)
            {
                prev = curr;
                if (curr.Key.CompareTo(element.Key) < 0)
                {
                    curr = curr.Right;
                }
                else if (curr.Key.CompareTo(element.Key) > 0)
                {
                    curr = curr.Left;
                }
                else
                {
                    throw new ArgumentException($"element with key:{element.Key} already exists.", nameof(element));
                }
            }
            if (prev == null)
            {
                _root = new Node <TKey, TValue> {
                    Key = element.Key, Value = element.Value
                }
            }
            ;
            else
            {
                var node = new Node <TKey, TValue> {
                    Key = element.Key, Value = element.Value, Parent = prev
                };
                if (prev.Key.CompareTo(node.Key) < 0)
                {
                    prev.Right = node;
                }
                else
                {
                    prev.Left = node;
                }
            }
            _count++;
        }