微软面试题_3
题目:怎样从顶部开始逐层打印二叉树结点数据?
分析:从根节点出发,依次将每层的节点从左到右压入一个队列。在访问队列头结点(出队)的同时将该节点的所有子节点压入队列。在访问完一个节点之后,检查是否还有新的节点可以访问,直到不再有新节点。
public static boolean traverseByLevel( TreeNode node ) {if( node == null ) {return false;}ArrayList<TreeNode> auxContainer = new ArrayList<TreeNode>();auxContainer.add(node);int pos = 0;while( pos < auxContainer.size() ) {System.out.println(auxContainer.get(pos).data);if( auxContainer.get(pos).left != null ) {auxContainer.add(auxContainer.get(pos).left);}if( auxContainer.get(pos).right != null ) {auxContainer.add(auxContainer.get(pos).right);}++pos;}return true;}