Create D lists of nodes where D is the depth of the binary tree
Are TreeNode and Solution in separate files? If the shown code is a single file, then it will not compile as you cannot have 2 top-level classes in the same file in Java.
Edit: Turns out it's fine as long as there is only one top-level public class.
Otherwise, just a few minor issues that I can see.
Diamond Operators
You have used the diamond operator &lt;&gt; for haMap and nodeDepth, but you should also use it on outputList and queue.
For example, instead of initializing outputList like:
List&lt;List&lt;Integer&gt;&gt; outputList = new ArrayList&lt;List&lt;Integer&gt;&gt;();

you should initialize it like:
List&lt;List&lt;Integer&gt;&gt; outputList = new ArrayList&lt;&gt;();

and similarly for queue, just like how you did for haMap and nodeDepth.
Favor interfaces over classes
When you define your collections, you should use an interface instead of specifying a specific implementation. That way you can change the implementation easily.
For example, you have done this for outputList and queue, but you should also do it for haMap, nodeDepth, and tempList.
haMap should be defined as:
Map&lt;Integer, List&lt;Integer&gt;&gt; haMap = new HashMap&lt;&gt;();

and similarly for nodeDepth.
Variable Names
Some of your variable names are decent, such as nodeDepth and outputList. They tell me what the object is used for as opposed to what it is. However, queue and haMap could be better. What is queue a queue of? What is being stored in haMap?