leetcode_middle_84_103. Binary Tree Zigzag Level Order Traversal

来源:互联网 发布:一套淘宝店铺装修价格 编辑:程序博客网 时间:2024/06/03 17:07

题意:

层次遍历二叉树,S型遍历



分析:

其实就是层次遍历,考虑用队列实现,如何反序呢?考虑用栈实现。至于层次,打个变量标记下就是了。

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public List<List<Integer>> zigzagLevelOrder(TreeNode root) {        List<List<Integer>> list = new ArrayList<>();        Queue<TreeNode> q = new LinkedList<>();        int layer = 0;        if(root==null)            return list;        q.add(root);        while(!q.isEmpty()){            Stack<Integer> s = new Stack<>();            List<Integer> l = new ArrayList<>();            int size = q.size();            layer++;            for(int i=0; i<size; i++){                TreeNode node = q.poll();                if(layer%2==0){                    s.push(node.val);                }else{                    l.add(node.val);                }                if(node.left!=null)                    q.offer(node.left);                if(node.right!=null)                    q.offer(node.right);            }            if(layer%2==0){                while(!s.isEmpty()){                    l.add(s.pop());                }            }            list.add(new ArrayList(l));        }        return list;    }}


0 0