Esempio n. 1
0
        public RedBlackRangeNode(TEl element, TNode succ, TNode pred, RangeConsolidator <TRange> rangeConsolidator,
                                 RangeInitializer <TEl, TRange> rangeInitializer) : base(element, succ, pred)
        {
            RangeConsolidator = rangeConsolidator;

            NodeData    = rangeInitializer(element);
            SubtreeData = NodeData;

            ElementReplaced += () =>
            {
                NodeData = rangeInitializer(Element);
                ConsolidateRangeData();
            };

            LeftNodeUpdated += () =>
            {
                if (Left != null)
                {
                    Left.RangeDataUpdated = ConsolidateRangeData;
                }

                ConsolidateRangeData();
            };

            RightNodeUpdated += () =>
            {
                if (Right != null)
                {
                    Right.RangeDataUpdated = ConsolidateRangeData;
                }

                ConsolidateRangeData();
            };
        }
 public StandardRedBlackRangeNode(TEl element, StandardRedBlackRangeNode <TEl, TRange> succ, StandardRedBlackRangeNode <TEl, TRange> pred,
                                  RangeConsolidator <TRange> rangeConsolidator, RangeInitializer <TEl, TRange> rangeInitializer)
     : base(element, succ, pred, rangeConsolidator, rangeInitializer)
 {
 }
Esempio n. 3
0
 protected RangeRedBlackBST(Comparison <TEl> comparison, RangeConsolidator <TRange> rangeConsolidator, RangeInitializer <TEl, TRange> rangeInitializer)
     : this(Comparer <TEl> .Create(comparison), rangeConsolidator, rangeInitializer)
 {
 }
Esempio n. 4
0
 protected RangeRedBlackBST(Comparer <TEl> comparer, RangeConsolidator <TRange> rangeConsolidator, RangeInitializer <TEl, TRange> rangeInitializer)
     : base(comparer)
 {
     RangeConsolidator = rangeConsolidator;
     RangeInitializer  = rangeInitializer;
 }
Esempio n. 5
0
 public StandardRedBlackRangeBST(Comparer <TEl> comparer, RangeConsolidator <TRange> rangeConsolidator, RangeInitializer <TEl, TRange> rangeInitializer)
     : base(comparer, rangeConsolidator, rangeInitializer)
 {
 }