Storing nodes in state space search
The common answer to "What to store?" is "As much as you need and nothing more."

You can instead store a reference to the previous state and the move(s) you made on the previous state to get to the current state. 

This is more compact that a full copy of the state in each node but less convenient to work with because you'd need to reconstruct the state by following all the moves made since the last known full state node. 

The next option is to throw away parts of the graph that you aren't looking at at the moment and instead recreate it later when needed. 

Both of these options trade space for time.