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 解出來的。。。基本可以叫學神了。