Beispiel #1
0
 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;
 }
Beispiel #2
0
 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);
     }
 }
Beispiel #3
0
 public TopTreeNode(IEulerNode value) : this(value, random.NextDouble(), null, null, null, null, null)
 {
 }