剑指 Offer 32 – III. 从上到下打印二叉树 III
难度中等
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。
1 /**
2 * Definition for a binary tree node.
3 * public class TreeNode {
4 * int val;
5 * TreeNode left;
6 * TreeNode right;
7 * TreeNode(int x) { val = x; }
8 * }
9 */
10 class Solution {
11 public List<List<Integer>> levelOrder(TreeNode root) {
12
13 if (root==null) return new ArrayList<>();
14 Queue<TreeNode> queue=new LinkedList<>();
15 queue.offer(root);
16 List<List<Integer>> ans=new ArrayList<>();
17 boolean flag=false;
18 while (!queue.isEmpty()){
19 int len=queue.size();
20 List<Integer> list=new ArrayList<>();
21 for (int i=0;i<len;i++){
22 TreeNode temp=queue.poll();
23 list.add(temp.val);
24 if (temp.left!=null) queue.offer(temp.left);
25 if (temp.right!=null) queue.offer(temp.right);
26
27 }
28 if (flag) Collections.reverse(list);
29 ans.add(list);
30 flag=!flag;
31 }
32 return ans;
33 }
34 }
思路:层序遍历的基础上判断是否要反转列表。
原创文章,作者:,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/270986.html