using System.Collections.Generic;
public static void Main()
Console.WriteLine("Hello World");
List<char> output=DFS_PreOrder_It(a);
output=DFS_PostOrder_Rec(a);
public static void PrintList(List<char> charArr)
foreach(char c in charArr)
public static List<char> DFS_PreOrder_Rec(Node root)
List<char> output=new List<char>();
if(root==null) return null;
List<char> leftOp=(DFS_PreOrder_Rec(root.left));
List<char> rightOp=(DFS_PreOrder_Rec(root.right));
output.Add((char)root.key);
if(leftOp!=null) output.AddRange(leftOp);
if(rightOp!=null) output.AddRange(rightOp);
public static List<char> DFS_InOrder_Rec(Node root)
List<char> output=new List<char>();
if(root==null) return null;
List<char> leftOp=(DFS_InOrder_Rec(root.left));
List<char> rightOp=(DFS_PreOrder_Rec(root.right));
if(leftOp!=null) output.AddRange(leftOp);
output.Add((char) root.key);
if(rightOp!=null) output.AddRange(rightOp);
public static List<char> DFS_PostOrder_Rec(Node root)
List<char> output=new List<char>();
if(root==null) return null;
List<char> leftOp=(DFS_PostOrder_Rec(root.left));
List<char> rightOp=(DFS_PostOrder_Rec(root.right));
if(leftOp!=null) output.AddRange(leftOp);
if(rightOp!=null) output.AddRange(rightOp);
output.Add((char) root.key);
public static List<char> DFS_PreOrder_It(Node root)
Stack<Node> temp=new Stack<Node>();
List<char> output=new List<char>();
if(root==null) return null;
if(t.right!=null) temp.Push(t.right);
if(t.left!=null) temp.Push(t.left);
public static List<char> DFS_InOrder_It(Node root)
Stack<Node> temp=new Stack<Node>();
List<char> output=new List<char>();
if(root==null) return null;
while(temp.Count>0 || curr!=null)
output.Add((char)curr.key);
public static List<char> DFS_PostOrder_It(Node root)
Stack<Node> temp1=new Stack<Node>();
Stack<Node> temp2=new Stack<Node>();
List<char> output=new List<char>();
if(root==null) return null;
while (temp2.Count > 0) {
output.Add((char)temp.key);