zoukankan      html  css  js  c++  java
  • [leetcode]Binary Tree Zigzag Level Order Traversal

    树的BFS的简单变种。

    public class Solution {
        public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) {
            ArrayList<ArrayList<Integer>> ans = new ArrayList<ArrayList<Integer>>();
            if (root == null) return ans;
            Queue<TreeNode> queue = new LinkedList<TreeNode>();
            queue.offer(root);
            int lastLevel = 1;
            int thisLevel = 0;
            boolean direction = true;
            
            ArrayList<Integer> row = new ArrayList<Integer>();
            while (queue.size() != 0)
            {
                TreeNode n = queue.poll();
                lastLevel--;
                if (n.left != null)
                {
                    queue.offer(n.left);
                    thisLevel++;
                }
                if (n.right != null)
                {
                    queue.offer(n.right);
                    thisLevel++;
                }
                row.add(n.val);
                if (lastLevel == 0)
                {
                    lastLevel = thisLevel;
                    thisLevel = 0;
                    if (!direction)
                    {
                        // reverse
                        int len = row.size();
                        for (int i = 0; i < len/2; i++)
                        {
                            int tmp = row.get(i);
                            row.set(i, row.get(len-1-i));
                            row.set(len-1-i, tmp);
                        }
                    }
                    direction = !direction;
                    ans.add(row);
                    row = new ArrayList<Integer>();
                }
            }
            return ans;
        }
    }
    

      

  • 相关阅读:
    单位根反演学习笔记
    省选模拟测试17
    省选模拟测试16
    省选模拟测试15
    省选模拟测试14
    省选模拟测试13
    P4491 [HAOI2018]染色
    省选模拟测试12
    P4389 付公主的背包
    洛谷P3403
  • 原文地址:https://www.cnblogs.com/lautsie/p/3327243.html
Copyright © 2011-2022 走看看