Exemple #1
0
 private static void GetTail(ModifiedLinkedListNode node)
 {
     while (node.Next != null)
     {
         node = node.Next;
     }
 }
Exemple #2
0
        public static void Flatten(ModifiedLinkedListNode node)
        {
            Queue <ModifiedLinkedListNode> q = new Queue <ModifiedLinkedListNode>();

            q.Enqueue(node);

            ModifiedLinkedListNode head = new ModifiedLinkedListNode();
            ModifiedLinkedListNode tail = head;

            while (q.Count != 0)
            {
                ModifiedLinkedListNode curr = q.Dequeue();
                tail.Next = curr;

                while (curr != null)
                {
                    if (curr.Child != null)
                    {
                        q.Enqueue(curr);
                    }

                    curr = curr.Next;
                    tail = tail.Next;
                }
            }

            node = head.Next;
        }
Exemple #3
0
        public static void FlattenOptimal(ModifiedLinkedListNode node)
        {
            ModifiedLinkedListNode tail = node;

            GetTail(tail);

            ModifiedLinkedListNode curr = node;

            while (curr != null)
            {
                if (curr.Child != null)
                {
                    tail.Next = curr.Child;
                    GetTail(curr.Child);
                    curr.Child = null;
                }

                curr = curr.Next;
            }
        }