private TopTreeNode(IEulerNode value, double priority, TopTreeNode parent, TopTreeNode left, TopTreeNode right, TopTreeNode next, TopTreeNode prev) { this.value = value; this.count = value != null && value.IsVertex ? 1 : 0; this.priority = priority; this.parent = parent; this.left = left; this.right = right; this.next = next; this.prev = prev; }
public TopTreeNode Insert(IEulerNode value) { if (right == null) { var nn = right = new TopTreeNode(value, random.NextDouble(), this, null, null, this.next, this); if (next != null) { this.next.prev = nn; } next = nn; nn.BubbleUp(); return(nn); } else { var v = next; var nn = v.left = new TopTreeNode(value, random.NextDouble(), v, null, null, v, this); v.prev = nn; next = nn; nn.BubbleUp(); return(nn); } }
public TopTreeNode(IEulerNode value) : this(value, random.NextDouble(), null, null, null, null, null) { }