Binary Tree Traversal 非常的套路:
主要有pre-order
in-order
post-order
三种traversal。 recursion的实现方式是最简单的,不过一般面试官会考iterative version.
recursion唯一要注意的就是ArrayList declare的位置。declare globally比较方便。 如果declare locally,那么 function 每一次的recursion都会新生成一个list, space上也会花更多。 如果是locally,需要addAll(orderTraversal(root.left/right);
iterative:
3种traversal的iterative 方法都是通过stack的调用来实现的, 第一次见这种题如何推导? 我觉得如果traversal是第一次见,那基本还是属于cs的入门阶段。这个阶段完全靠自己融会贯通stack 解出来的。。。基本可以叫学神了。