using System.Collections.Generic;
public class BinTreeTraversal
private Node left, right;
public Node getLeft(){ return this.left; }
public Node getRight(){ return this.right; }
public String getData(){ return this.data; }
public void setLeft(Node left){ this.left = left; }
public void setRight(Node right){ this.right = right; }
protected void preOrderTraverse(Node node)
Console.Write(node.getData() + " ");
preOrderTraverse(node.getLeft());
preOrderTraverse(node.getRight());
protected void inOrderTraverse(Node node)
inOrderTraverse(node.getLeft());
Console.Write(node.getData() + " ");
inOrderTraverse(node.getRight());
protected void postOrderTraverse(Node node)
postOrderTraverse(node.getLeft());
postOrderTraverse(node.getRight());
Console.Write(node.getData() + " ");
protected void levelOrderTraverse(Node node)
Queue<Node> nQ = new Queue<Node>();
Console.Write(n.getData());
if (n.getLeft() != null){ nQ.Enqueue(n.getLeft()); }
if (n.getRight() != null){ nQ.Enqueue(n.getRight()); }
protected int findHeight(Node node)
if (node == null){ return -1; }
int heightLeft = findHeight(node.getLeft());
int heightRight = findHeight(node.getRight());
if (heightLeft > heightRight)
public static void Main()
BinTreeTraversal.Node root = new BinTreeTraversal.Node(")");
BinTreeTraversal.Node a1 = new BinTreeTraversal.Node(")");
BinTreeTraversal.Node a2 = new BinTreeTraversal.Node("5");
BinTreeTraversal.Node b1 = new BinTreeTraversal.Node("x");
BinTreeTraversal.Node b2 = new BinTreeTraversal.Node("2");
BinTreeTraversal.Node b3 = new BinTreeTraversal.Node("(");
BinTreeTraversal.Node b4 = new BinTreeTraversal.Node("x");
BinTreeTraversal.Node c1 = new BinTreeTraversal.Node("(");
BinTreeTraversal.Node c2 = new BinTreeTraversal.Node("89");
BinTreeTraversal.Node c3 = new BinTreeTraversal.Node("2");
BinTreeTraversal.Node c4 = new BinTreeTraversal.Node("x");
BinTreeTraversal.Node c5 = new BinTreeTraversal.Node("-");
BinTreeTraversal.Node c6 = new BinTreeTraversal.Node("11");
BinTreeTraversal.Node d1 = new BinTreeTraversal.Node("2");
BinTreeTraversal.Node d2 = new BinTreeTraversal.Node("^");
BinTreeTraversal.Node d3 = new BinTreeTraversal.Node("+");
BinTreeTraversal.Node d4 = new BinTreeTraversal.Node("181");
BinTreeTraversal.Node d5 = new BinTreeTraversal.Node("98");
BinTreeTraversal binTT = new BinTreeTraversal();
binTT.preOrderTraverse(root);
binTT.inOrderTraverse(root);
binTT.postOrderTraverse(root);
binTT.levelOrderTraverse(root);
Console.WriteLine(binTT.findHeight(root));