请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。
例如:
给定二叉树: [3,9,20,null,null,15,7]
,
3 / 9 20 / 15 7
返回其层次遍历结果:
[ [3], [20,9], [15,7] ]
提示:
节点总数 <= 1000
//实现偶数层,逆置节点,只要在插入时选择头插法。
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 class Solution { 11 List <List<Integer>> list=new ArrayList<>(); 12 public List<List<Integer>> levelOrder(TreeNode root) { 13 fun(root,0); 14 return list; 15 16 } 17 18 public void fun(TreeNode root,int t){ 19 if(root!=null){ 20 if(t>=list.size()){ 21 list.add(new ArrayList()); 22 } 23 if(t%2==0){ 24 list.get(t).add(root.val); 25 }else{ 26 list.get(t).add(0,root.val); 27 } 28 fun(root.left,t+1); 29 fun(root.right,t+1); 30 } 31 } 32 }
剑指 Offer 32 - III. 从上到下打印二叉树 III
原文:https://www.cnblogs.com/SEU-ZCY/p/14614220.html