lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  1846 随笔 :: 0 文章 :: 109 评论 :: 288万 阅读

1. 题目

 

2. 解法

当我们遍历一棵二叉树时,我们可以按照层序遍历的方式,从上到下、从左到右地遍历每个节点。

而锯齿形层序遍历则是在层序遍历的基础上,

增加了一个规则:对于每一层,如果当前层是从左到右遍历的,则下一层就从右到左遍历;如果当前层是从右到左遍历的,则下一层就从左到右遍历。

这样,我们就可以得到一个“锯齿形”的遍历顺序。

 

public List<List<Integer>> zigzagLevelOrder(TreeNode root) {

List<List<Integer>> ans = new ArrayList<>();
if (root == null) {
return ans;
}

Queue<TreeNode> queue = new ArrayDeque<>();
queue.offer(root);

boolean leftToRight = true;

while (!queue.isEmpty()) {
List<Integer> levelNodeVals = new ArrayList<>();
int size = queue.size();


for (int i = 0; i < size; i++) {
TreeNode temp = queue.poll();
if (leftToRight) {
levelNodeVals.add(temp.val);
} else {
levelNodeVals.add(0, temp.val);
}

if (temp.left != null) queue.add(temp.left);
if (temp.right != null) queue.add(temp.right);

}
ans.add(levelNodeVals);
leftToRight = !leftToRight;
}
return ans;

}

  

 

3. 总结

posted on   白露~  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2021-04-25 Dubbo源码分析(十)同步调用与异步调用
2021-04-25 Dubbo源码分析(九)负载均衡算法
2021-04-25 Dubbo源码分析(八)集群容错机制
2021-04-25 Dubbo源码分析(七)服务目录
2021-04-25 Dubbo源码分析(六)服务引用的具体流程
2021-04-25 Dubbo源码分析(五)服务暴露的具体流程(下)
2021-04-25 Dubbo源码分析(四)服务暴露的具体流程(上)
点击右上角即可分享
微信分享提示