請實現一個函數按照之字形順序打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右到左的順序打印,第三行再按照從左到右的順序打印,其他行以此類推。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(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);
}
}
}