LeetCode-Binary Tree Level Order Traversal

基本思路就是通过使用对列(FIFO)来实现二叉树的层序遍历

ArrayList<Integer> list = new ArrayList<>();
        ArrayList<ArrayList<Integer>> res = new ArrayList<>();
        
        if(root==null)
            return res;
        ArrayDeque<TreeNode> queue = new ArrayDeque<>();
        queue.add(root);
        while(!queue.isEmpty()){
            int size = queue.size();
            list = new ArrayList<>();
            while(size-->0){
                TreeNode temp = queue.pop();
                list.add(temp.val);
                if(temp.left!=null){
                    queue.offer(temp.left);
                }
                if(temp.right!=null){
                    queue.offer(temp.right);
                }
            }
            res.add(list);
        }
        return res;

另一道题是倒序输出层序遍历的结果,可以使用ArrayList.add(index,e)的方法,效果是把e插入到Index的位置,其他顺序后移。

ArrayList<Integer> list = new ArrayList<>();
        ArrayList<ArrayList<Integer>> res = new ArrayList<>();
        
        if(root==null)
            return res;
        ArrayDeque<TreeNode> queue = new ArrayDeque<>();
        queue.add(root);
        while(!queue.isEmpty()){
            int size = queue.size();
            list = new ArrayList<>();
            while(size-->0){
                TreeNode temp = queue.pop();
                list.add(temp.val);
                if(temp.left!=null){
                    queue.offer(temp.left);
                }
                if(temp.right!=null){
                    queue.offer(temp.right);
                }
            }
            res.add(0,list);
        }
        return res;

又水了一篇博客

posted @ 2018-03-23 20:36  Aiopr  阅读(114)  评论(0编辑  收藏  举报