using System.Collections.Generic;
using System.Threading.Tasks;
namespace ConsoleApplication2
public class BinaryTreeToList
public BinaryTreeToList()
public DoubleLinkedListNode ConvertTreeToDoubleLinkedListNode(TreeNode root)
DoubleLinkedListNode res = new DoubleLinkedListNode();
var newNode = ConvertTreeToDoubleLinkedListNode(root.Left);
var newNode = ConvertTreeToDoubleLinkedListNode(root.Right);
else if (res.Next.Next == null)
var newNode = ConvertTreeToDoubleLinkedListNode(root.Right);
newNode.Previous = res.Next;
DoubleLinkedListNode temp = res;
while (temp.Next != null)
var newNode = ConvertTreeToDoubleLinkedListNode(root.Right);
public class DoubleLinkedListNode
public int Index { get; set; }
public DoubleLinkedListNode Next { get; set; }
public DoubleLinkedListNode Previous { get; set; }