本人新手为了面试互联网公司,将刷题做一个记录以及总结,方便之后学习!!
第30道问题 剑指offer 34为一道中等题。
题目:
力扣https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/submissions/
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;
}
}
结果:
总结:
要使用pop()的方法,LinkedList<TreeNode> 可以但是List<TreeNode>就不可以,需要注意。