Loading collection data...
Collections are a way for you to organize kata so that you can create your own training routines. Every collection you create is public and automatically sharable with other warriors. After you have added a few kata to a collection you and others can train on the kata contained within the collection.
Get started now by creating a new collection.
You are making extra calls to getHeight then required. Would increase your time of execution.
Holding the height infomration once caluculated might be a better solution.
To have an optimized solution you do not need isPerfect inside your TreeNode class.
This just hinted towards a more complicated solution.
Check my code for the reason.