• [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;
        }
    }
    

      

  • 相关阅读:
    01-数字转人民币读法
    词组缩写
    字符串区间比较
    字符串读入
    回文数判断
    字符串加密
    字母统计
    互质的数
    【Tools】Anaconda Operaction
    【mmwave】DeviceSurvey
  • 原文地址:https://www.cnblogs.com/lautsie/p/3327243.html
Copyright © 2020-2023  润新知