直接广度遍历,使用LinkedList的头插法和尾插法,处理不同层
按之字形顺序打印二叉树
http://www.nowcoder.com/questionTerminal/91b69814117f4e8097390d107d2efbe0
public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> list = new ArrayList<>();
if (pRoot==null)
return list;
LinkedList<TreeNode> queue = new LinkedList<>();
queue.add(pRoot);
int flag=0;
while (!queue.isEmpty()){
ArrayList<Integer> path = new ArrayList<>();
//某层的节点个数
int size = queue.size();
for (int i=0;i<size;i++){
TreeNode node = queue.removeFirst();
if (flag%2==0)
path.add(path.size(),node.val);
else
path.add(0,node.val);
if (node.left!=null)
queue.add(node.left);
if (node.right!=null)
queue.add(node.right);
}
flag++;
list.add(path);
}
return list;
}
快手成长空间 763人发布