剑指 Offer 32 - III. 从上到下打印二叉树 III

题目:

请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。

 

例如:
给定二叉树: [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回其层次遍历结果:

[
  [3],
  [20,9],
  [15,7]
]

 

提示:

  1. 节点总数 <= 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 }

 

posted @ 2021-04-03 16:52  堤苏白  阅读(36)  评论(0)    收藏  举报