剑指 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 @   堤苏白  阅读(32)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示