请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。
示例: 分析:在上一题的基础上,需要将奇数行的链表进行反转,可以直接使用 Collections 中的 reverse 的方法进行反转。
代码:
class Solution {
List> list = new ArrayList<>();
public List> levelOrder(TreeNode root) {
if (root == null) {
return new ArrayList<>();
}
ceng(root, 0);
for (int i = 0; i < list.size(); i++) {
if(i%2==1){
Collections.reverse(list.get(i));
}
}
return list;
}
public void ceng(TreeNode root,int k){
if (root!=null){
if (list.size()<=k){
list.add(new ArrayList<>());
}
list.get(k).add(root.val);
ceng(root.left,k+1);
ceng(root.right,k+1);
}
}
}
结果:



