Here's a brief example that shows how to serialize a tree of objects.

      import java.io.*;

      class tree implements java.io.Serializable {
          public tree left;
          public tree right;
          public int id;
          public int level;

          private static int count = 0;
          public tree(int l) {
              id = count++;
              level = l;
              if (l > 0) {
                  left = new tree(l-1);
                  right = new tree(l-1);
              }
          }
          public void print(int levels) {
              for (int i = 0; i < level; i++)
                  System.out.print("  ");
              System.out.println("node " + id);

              if (level <= levels && left != null)
                  left.print(levels);

              if (level <= levels && right != null)
                  right.print(levels);
          }
 

          public static void main (String argv[]) {

              try {
                  /* Create a file to write the serialized tree to. */
                  FileOutputStream ostream = new FileOutputStream("tree.tmp");
                  /* Create the output stream */
                  ObjectOutputStream p = new ObjectOutputStream(ostream);

                  /* Create a tree with three levels. */
                  tree base = new tree(3);

                  p.writeObject(base); // Write the tree to the stream.
                  p.flush();
                  ostream.close();    // close the file.
 
                  /* Open the file and set to read objects from it. */
                  FileInputStream istream = new FileInputStream("tree.tmp");
                  ObjectInputStream q = new ObjectInputStream(istream);
 
                  /* Read a tree object, and all the subtrees */
                  tree new_tree = (tree)q.readObject();

                  new_tree.print(3);  // Print out the top 3 levels of the tree
              } catch (Exception ex) {
                  ex.printStackTrace();
              }
          }
      }