力扣面试150题--二叉树的锯齿形层序遍历
Day 56
题目描述
思路
锯齿形就是一层是从左向右,一层是从右向左,那么我们可以分析样例,对于第奇数层是从左向右,第偶数层是从右向左,于是可以采取一个计数器,采取链表方式,从左向右就是正常插入到链表后面,从右向左就是插入到链表前面。
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {public List<List<Integer>> zigzagLevelOrder(TreeNode root) {List<List<Integer>>result=new ArrayList<>();if(root==null){return result;}Queue<TreeNode>tree=new LinkedList<>();//保存树的节点int count;TreeNode x;int y=0;tree.offer(root);while(!tree.isEmpty()){count=tree.size();List<Integer>res=new LinkedList<>();for(int i=0;i<count;i++){x=tree.poll();if(x.left!=null) tree.offer(x.left);if(x.right!=null) tree.offer(x.right);if(y%2==0){res.add(x.val);}else{res.addFirst(x.val);}}y++;result.add(res);}return result;}
}