LC.P2415[反转二叉树的奇数层] 方法一:BFS1234567891011121314151617181920212223242526272829303132333435363738394041424344/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */class Solution { public TreeNode reverseOddLevels(TreeNode root) { Deque<TreeNode> queue = new ArrayDeque<>(); queue.offer(root); boolean flag = false; while (!queue.isEmpty()) { int size = queue.size(); List<TreeNode> list = new ArrayList<>(); while (size-- > 0) { TreeNode node = queue.poll(); if (flag) list.add(node); // 树为满二叉树 if (node.left != null) { queue.offer(node.left); queue.offer(node.right); } } if (flag) { for (int left = 0, right = list.size() - 1; left < right; ++left, --right) { int temp = list.get(left).val; list.get(left).val = list.get(right).val; list.get(right).val = temp; } } flag = !flag; } return root; }} 时间复杂度:$O(n)$ 空间复杂度:$O(n)$