Given access to a node, write a function to print the pre order for the binary tree
#1 = Brute force method = preorder : node -> left -> right ; depth first search ; stack
public class TreeNode
{
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode(int val = 0, TreeNode left = null, TreeNode right = null)
{
this.val = val;
this.left = left;
this.right = right;
}
}
public class Solution {
public IList PreorderTraversal(TreeNode root) {
if (root == null) return new List();
List result = new List();
Stack storage = new Stack();
storage.Push(root);
while (storage.Count > 0)
{
TreeNode temp = storage.Pop();
result.Add(temp.val);
if (temp.right != null) storage.Push(temp.right);
if (temp.left != null) storage.Push(temp.left);
}
return result;
}}
#2 = Opitmized : In-place using recursion
function printPreorder(node : Node) : void
{
if(Node != null)
{
Console.WriteLine ("printing elements" + Node.data);
if (Node.left != null) printPreorder(Node.left);
if (Node.right != null) printPreorder(Node.right);
}
}