标签:层遍历 div font etc class nbsp sof 特定 一个
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
例如:
给定二叉树 [3,9,20,null,null,15,7]
,
3
/ 9 20
/ 15 7
返回锯齿形层次遍历如下:
[ [3], [20,9], [15,7] ]
思路: 与层次遍历类似,可以直接将特定层次的结果倒置
1 class Solution103 {
2
3 public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
4 List<List<Integer>> res = new ArrayList<>();
5 search(root, 0, res);
6 for (int i = 1; i < res.size(); i += 2) {
7 Collections.reverse(res.get(i));
8 }
9
10 return res;
11 }
12
13 private void search(TreeNode parent, int level, List<List<Integer>> res) {
14 if (parent == null) {
15 return;
16 }
17 if (res.size() <= level) {
18 res.add(new ArrayList<>());
19 }
20 res.get(level).add(parent.val);
21 search(parent.left, level + 1, res);
22 search(parent.right, level + 1, res);
23 }
24 }
标签:层遍历 div font etc class nbsp sof 特定 一个
原文地址:https://www.cnblogs.com/rainbow-/p/10364644.html