刷题LeetCode 剑指offer34

本人新手为了面试互联网公司,将刷题做一个记录以及总结,方便之后学习!!

第30道问题 剑指offer 34为一道中等题。

题目:

力扣刷题LeetCode 剑指offer34https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/submissions/刷题LeetCode 剑指offer34

1.自己分析

这个题思想仍跟上一题一致,不同的是这个题目中采用之字型打印,也就意味着之前的打印方式改变,之字形可以看成没过2个就反向打印一次,利用mod2就可以分辨出来。

 

class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        if(root == null) return new LinkedList<>();
        List<List<Integer>> list = new LinkedList<List<Integer>>();
        LinkedList<TreeNode> tree = new LinkedList<>();//前面的是linkedlist
        tree.add(root);
        int count=0;
        while(!tree.isEmpty()){
            List<Integer> list1 = new LinkedList<>();
            for(int i = tree.size();i>0;i--){
            //for(int i = 0;i<tree.size();i++){
                TreeNode node = tree.pop();
                list1.add(node.val);
                if(node.left!= null) tree.add(node.left);
                if(node.right!=null) tree.add(node.right);
             }
             //这里面对list1进行处理
             if(count % 2==0){
                 list.add(list1);
                 count++;
             }else{//反向处理
                 List<Integer> list2 = new LinkedList<>();
                 for(int i=list1.size()-1;i>=0;i--){
                    list2.add(list1.get(i));
                 }
                 list.add(list2);
                 count++;
             }
             
        }
        
    return list;
    }
}

结果:
刷题LeetCode 剑指offer34

总结:

要使用pop()的方法,LinkedList<TreeNode> 可以但是List<TreeNode>就不可以,需要注意。

上一篇:Fuel快速安装OpenStack


下一篇:gmapping建图功能应用