Your code do not behave the way you expect, and you don't understand why !
There is an almost universal solution: Run your code on debugger step by step.
Mastering Debugging in Visual Studio 2010 - A Beginner's Guide[
^]
The downside of this solution:
- It is a DIY, you are the one tracking the problem and finding its roots, which lead to the solution.
The upside of this solution:
- You see your code behaviour, you match it against your expectations.
secondary effects
- Your will be proud of finding bugs yourself.
- Your skills will improve.
Advice:
- prepare a few trees showing different cases.
- Run your program on debugger with theses examples trees.
You should find pretty quickly what is wrong.