请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-urtu2CUp-1593082665517)(https://i.loli.net/2020/06/25/VLUvRWB5lYz3yji.png)]
提示:
节点总数 <= 1000
题解:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
List<List<Integer>> res = new ArrayList();
public List<List<Integer>> levelOrder(TreeNode root) {
helper(root, 0);
return res;
}
private void helper(TreeNode root, int k) {
if(root != null) {
if(res.size() == k) {
res.add(new ArrayList());
}
if(k % 2 == 0) {
res.get(k).add(root.val);
} else {
res.get(k).add(0, root.val);
}
helper(root.left, k+1);
helper(root.right,k+1);
}
}
}