按之字形顺序打印二叉树
按之字形顺序打印二叉树
https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0?tpId=13&&tqId=11212&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
层次遍历的变形,利用一个队列,然后将结点放进去,一次遍历一行,但是得判断奇偶行,第一行从左到右输出,第二行从右到左输出,所以我们维护一个变量dep,每遍历一行就+1。
public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> res = new ArrayList<>(); if(pRoot == null) return res; Queue<TreeNode> q = new LinkedList<>(); q.add(pRoot); int dep = 0; while(!q.isEmpty()){ LinkedList<Integer> list = new LinkedList<>(); int size = q.size(); for(int i = 0; i < size; i++){ TreeNode node = q.poll(); if(dep%2 == 0){ list.add(node.val); }else{ list.addFirst(node.val); } if(node.left != null) q.add(node.left); if(node.right != null) q.add(node.right); } dep++; res.add(new ArrayList(list)); } return res; }
剑指offer 文章被收录于专栏
为刷过的每一道题都书写一篇题解,便于重复练习~