GuessAnAnimal Will not Serialize
<p>I've been working on this for a long time now and can't figure out why this wont serialize my data.  The game is meant to store the user-typed question and answer when it gets it so the next time the game is opened it will have those questions asked... for example does the animal fly ... no ... input a question that will help me guess next time ... it doesn't fly.. what is it ? monkey.... ok so next time the game runs ... it will ask if it doesn't fly and if it is a monkey. but the problem is i cant seem to put this together.</p>

<p>If i could get help quickly - i would really appreciate it.  Thanks.</p>

<pre><code>//GuessTheAnimal Class-----------------------------------
 import javax.swing.JOptionPane;

import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.io.Serializable;
import java.io.ObjectOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;


public class GuessTheAnimal implements Serializable
{


public static void main(String[] args)
{
Tree animal = new Tree();
animal.instruction();
animal.play();
animal.writeToFile("treeData.ser");
Tree newAnimal = Tree.readFromFile("treeData.ser");
animal.play();



}

}

 //Tree Class-----------------------------------------
  import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
 import java.io.Serializable;

import javax.swing.JOptionPane;


    public class Tree
//Tree class
 {
private Node root;

//constructor
public Tree()
{   root = new Node();
    root.leftChild = new Node();
    root.rightChild = new Node();
    root.questionText = "Does it live on land?";
    root.leftChild.questionText ="bear";  // left side is Yes, right side is No
    root.rightChild.questionText = "parrot";
}

public void instruction()
{
    JOptionPane.showMessageDialog(null, "Think of an animal, I will try to guess it, answer yes or no");
}


public void play()
{
 Node current = root;
 Node parent = current;
 boolean isLeftChild = true;


 while(true)
 {   parent = current;
     int response = JOptionPane.showConfirmDialog(null,current.questionText );
     //code here for yes
     if (response == JOptionPane.YES_OPTION)
     {
        current = current.leftChild;
        isLeftChild=true;
     }
     //code here for no
     else if (response == JOptionPane.NO_OPTION)
     {
        current = current.rightChild;
        isLeftChild = false;
     }


     if (current.leftChild == null &amp;&amp; current.rightChild == null)
     {
         int secondQ = JOptionPane.showConfirmDialog(null, "Is your animal a " + current.questionText + "?");

         if (secondQ == JOptionPane.YES_OPTION) 
         {
           JOptionPane.showMessageDialog(null,"I Guessed your animal!");
           return;
         }
         else if (secondQ == JOptionPane.NO_OPTION)
         {
             Node nodeOne = new Node();
             Node nodeTwo = new Node();

              nodeOne.questionText = JOptionPane.showInputDialog("Write a question that differentiates your animal from the animal I guessed, it would be yes for your animal");

              nodeTwo.questionText = JOptionPane.showInputDialog("What is this animal?");

              nodeOne.rightChild = current;
              nodeOne.leftChild = nodeTwo;

              // parent.leftChild = nodeOne or parent.rightChild = nodeOne
              if(isLeftChild == false)
              {
                  parent.rightChild = nodeOne;
                  System.out.println("right child");
              }
              else
                  {
                  parent.leftChild = nodeOne;
                  System.out.println("left Child");
                  }
              return;




         }


     }

}

}

public void preOrder(Node localRoot)
{
if(localRoot != null)
   {
   System.out.print(localRoot.questionText + " ");
   preOrder(localRoot.leftChild);
   preOrder(localRoot.rightChild);
   }
}

public Node getRoot(){
    return root;
}
public boolean writeToFile(String text) {
    try {
        FileOutputStream fileOut = new FileOutputStream("treeData.ser");
        ObjectOutputStream out = new ObjectOutputStream(fileOut);
        out.writeObject(root);
        out.close();
        fileOut.close();
        return true;
} catch (java.io.IOException e) {
    e.printStackTrace();
    System.out.println("-----problem in writeToFile()--------");
    return false;
}
}

/** @return tree read from file, if successful input, else null */
public static Tree readFromFile(String fileName) {
    try {
    FileInputStream fileIn = new FileInputStream("treeData.ser");
    ObjectInputStream objIn = new ObjectInputStream(fileIn);
    Tree newAnimal = (Tree) objIn.readObject();
    objIn.close();
    fileIn.close();
    return newAnimal;
    }
    catch (Exception e){//Catch exception if any
        e.printStackTrace();
        System.out.println("-----problem in readFromFile()--------");
    }
    return null;
}
}


 //Node Class----------------------------------


 public class Node {
 //Node class
//instance variables
public String questionText;
public Node leftChild;
public Node rightChild;

public void displayText()
{
    System.out.println(questionText);
}


/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub

}

  }
</code></pre>
