# Convert Ternary Tree to doubly linked list.

Write a Program to create a doubly linked list from a Ternary Tree.

#### Solution:

`````` using System;

{
class Program
{
public static void Main()
{
ternaryTree.Root = new Node(1);
ternaryTree.Root.Left = new Node(110);
ternaryTree.Root.Middle = new Node(122);
ternaryTree.Root.Right = new Node(5);
ternaryTree.Root.Left.Left = new Node(2);
ternaryTree.Root.Left.Middle = new Node(41);
ternaryTree.Root.Left.Right = new Node(5);
ternaryTree.Root.Middle.Left = new Node(14);
ternaryTree.Root.Middle.Middle = new Node(26);
ternaryTree.Root.Middle.Right = new Node(18);
ternaryTree.Root.Right.Left = new Node(3);
ternaryTree.Root.Right.Middle = new Node(45);
ternaryTree.Root.Right.Right = new Node(70);
ternaryTree.ConvertTernaryToDll(ternaryTree.Root);
ternaryTree.Print();
}
}

{
public Node Root;
public Node Tail;

public void ConvertTernaryToDll(Node node)
{
if (node == null)
return;

Node left = node.Left;
Node middle = node.Middle;
Node right = node.Right;

{
node.Middle = null;
Tail.Right = null;
}
else
{
Tail.Right = node;
node.Left = Tail;
node.Middle = null;
Tail = node;
Tail.Right = null;
}

ConvertTernaryToDll(left);
ConvertTernaryToDll(middle);
ConvertTernaryToDll(right);
}

public void Print()
{
return;

while (current != null)
{
Console.WriteLine(current.Data);
current = current.Right;
}
}
}

public class Node
{
public int Data;
public Node Next;
public Node Left;
public Node Middle;
public Node Right;

public Node(int data)
{
Data = data;
}
}
}
``````