content: public class TreeTraversal {
      static class Node {
          int data;
          Node left;
          Node right;
  
          Node(int data) {
              this.data = data;
              this.left = null;
              this.right = null;
          }
      }
  
      static class BinaryTree {
          static int index = -1;
  
          public Node BuildTree(int nodes[]) {
              index++;
              if (nodes[index] == -1) {
                  return null;
              }
              Node newNode = new Node(nodes[index]);
              newNode.left = BuildTree(nodes);
              newNode.right = BuildTree(nodes);
              return newNode;
          }
      }
  
      public static void preorder(Node root) {
          if (root == null) {
              return;
          }
          System.out.print(root.data + " ");
          preorder(root.left);
          preorder(root.right);
      }
  
      public static void inorder(Node root) {
          if (root == null) {
              return;
          }
          inorder(root.left);
          System.out.print(root.data + " ");
          inorder(root.right);
      }
  
      public static void postorder(Node root) {
          if (root == null) {
              return;
          }
          postorder(root.left);
          postorder(root.right);
          System.out.print(root.data + " ");
      }
  
      public static void main(String[] args) {
          int nodes[] = { 1, 2, 4, -1, -1, 5, -1, -1, 3, -1, 6, -1, -1 };
          BinaryTree tree = new BinaryTree();
          Node root = tree.BuildTree(nodes);
          System.out.print("ROOT NODE -> ");
          System.out.println(root.data);
          System.out.print("PREORDER TRAVERSAL -> ");
          preorder(root);
          System.out.println("");
          System.out.print("INORDER TRAVERSAL -> ");
          inorder(root);
          System.out.println("");
          System.out.print("POST-ORDER TRAVERSAL -> ");
          postorder(root);
          System.out.println("");
      }
  }
  