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) { }
protected RangeRedBlackBST(Comparison <TEl> comparison, RangeConsolidator <TRange> rangeConsolidator, RangeInitializer <TEl, TRange> rangeInitializer) : this(Comparer <TEl> .Create(comparison), rangeConsolidator, rangeInitializer) { }
protected RangeRedBlackBST(Comparer <TEl> comparer, RangeConsolidator <TRange> rangeConsolidator, RangeInitializer <TEl, TRange> rangeInitializer) : base(comparer) { RangeConsolidator = rangeConsolidator; RangeInitializer = rangeInitializer; }
public StandardRedBlackRangeBST(Comparer <TEl> comparer, RangeConsolidator <TRange> rangeConsolidator, RangeInitializer <TEl, TRange> rangeInitializer) : base(comparer, rangeConsolidator, rangeInitializer) { }