力扣 - 剑指 Offer 32 - III. 从上到下打印二叉树 III
2021-11-25 23:46
337 查看
题目
剑指 Offer 32 - III. 从上到下打印二叉树 III
思路1
- 这题又是上一题剑指 Offer 32 - II. 从上到下打印二叉树 II的升级版,要求我们每层的遍历:一层是从左往右,另一层从右往左,因此可以使用一个布尔值
flag
来记录每次的状态(每次遍历结束后将flag
取反),如果flag
为true
,我们就按照顺序添加节点到链表的末尾;如果为false
,我们就将节点添加到链表的头部。然后每层遍历结束后再添加到res
中即可
代码
class Solution { public List<List<Integer>> levelOrder(TreeNode root) { if (root == null) { return new LinkedList<>(); } Queue<TreeNode> queue = new LinkedList<>(); List<List<Integer>> res = new LinkedList<>(); queue.offer(root); // 使用一个falg判断是奇数层还是偶数层 boolean flag = true; while (!queue.isEmpty()) { LinkedList<Integer> temp = new LinkedList<>(); int size = queue.size(); while (size > 0) { TreeNode node = queue.poll(); if (flag) { temp.add(node.val); } else { temp.addFirst(node.val); } if (node.left != null) { queue.offer(node.left); } if (node.right != null) { queue.offer(node.right); } size--; } res.add(temp); // 每遍历一层都取反 flag = !flag; } return res; } }
复杂度分析
- 时间复杂度:O(N)
- 空间复杂度:O(N)
相关文章推荐
- 剑指 Offer 32 - III. 从上到下打印二叉树 III
- 【Golang】LeetCode-剑指Offer-面试题32 - III-从上到下打印二叉树 III
- 剑指offer32.从上到下打印二叉树
- 【剑指offer】面试题32(2):分行从上到下打印二叉树
- 【Golang】LeetCode-剑指Offer-面试题32 - I-从上到下打印二叉树【两种解法】
- 剑指offer面试题32:从上到下打印二叉树(c++ 完整代码)
- 剑指Offer 面试题32:从上到下打印二叉树 Java代码实现
- 32_剑指offer_java_从上到下打印二叉树
- 【剑指offer】面试题32:从上到下打印二叉树
- 【Golang】LeetCode-剑指Offer-面试题32 - II-从上到下打印二叉树 II
- 剑指offer 从上到下打印二叉树
- 【剑指Offer】从上到下打印二叉树
- 剑指-面试题32-1 从上到下打印二叉树
- 剑指offer-从上到下打印二叉树(C++ 辅助容器)
- 剑指offer---从上到下打印二叉树(Java)
- 【剑指offer-解题系列(22)】从上到下打印二叉树
- 剑指offer21从上到下打印二叉树
- [剑指offer]python从上到下打印二叉树【面试题9.15】
- 剑指Offer-32 从上往下打印二叉树
- 剑指offer之从上到下打印二叉树(Python)