// Java program for different tree traversals
/* Class containing left and right child of current
node and key value*/
class Node
{
String key;
Node left, right,medile;
public Node(String item)
{
key = item;
left = right = null;
}
}
class BinaryTree
{
// Root of Binary Tree
Node root;
BinaryTree()
{
root = null;
}
/* Given a binary tree, print its nodes according to the
"bottom-up" postorder traversal. */
void printPostorder(Node node)
{
if (node == null)
return;
// first recur on left subtree
printPostorder(node.left);
// then recur on right subtree
printPostorder(node.right);
// now deal with the node
System.out.print(node.key + " ");
}
/* Given a binary tree, print its nodes in inorder*/
void printInorder(Node node)
{
if (node == null)
return;
/* first recur on left child */
printInorder(node.left);
/* then print the data of node */
System.out.print(node.key + " ");
/* now recur on right child */
printInorder(node.right);
}
/* Given a binary tree, print its nodes in preorder*/
void printPreorder(Node node)
{
if (node == null)
return;
/* first print data of node */
System.out.print(node.key + " ");
/* then recur on left sutree */
printPreorder(node.left);
printPreorder(node.medile);
/* now recur on right subtree */
printPreorder(node.right);
}
// Wrappers over above recursive functions
void printPostorder() { printPostorder(root); }
void printInorder() { printInorder(root); }
void printPreorder() { printPreorder(root); }
// Driver method
public static void main(String[] args)
{
BinaryTree tree = new BinaryTree();
tree.root= new Node(" ");
tree.root.left= new Node("D");
tree.root.left.left=new Node("DD");
tree.root.left.left.left=new Node("DDD");
tree.root.left.left.medile=new Node("DDN");
tree.root.left.left.right=new Node("DDA");
tree.root.left.medile=new Node("DN");
tree.root.left.medile.left=new Node("DND");
tree.root.left.medile.medile=new Node("DNN");
tree.root.left.medile.right=new Node("DNA");
tree.root.left.right=new Node("DA");
tree.root.left.right.left=new Node("DAD");
tree.root.left.right.right=new Node("DAN");
tree.root.medile=new Node("N");
tree.root.medile.left=new Node("NA");
tree.root.medile.medile=new Node("NN");
tree.root.medile.right=new Node("NA");
tree.root.right=new Node("A");
tree.root.right.left=new Node("AD");
tree.root.right.medile=new Node("AN");
tree.root.right.right=new Node("AA");
System.out.println("Preorder traversal of binary tree is ");
tree.printPreorder();
System.out.println(" ");
System.out.println("---------------------------------------------- ");
System.out.println(" Inorder traversal of binary tree is ");
tree.printInorder();
System.out.println(" ");
System.out.println("---------------------------------------------- ");
System.out.println(" Postorder traversal of binary tree is ");
tree.printPostorder();
System.out.println(" ");
System.out.println("---------------------------------------------- ");
}
}