LeetCode 第103題 二叉樹的鋸齒形層次遍歷
阿新 • • 發佈:2019-02-12
search pri node eve vat parent font new ons
給定一個二叉樹,返回其節點值的鋸齒形層次遍歷。(即先從左往右,再從右往左進行下一層遍歷,以此類推,層與層之間交替進行)。
例如:
給定二叉樹 [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 }
LeetCode 第103題 二叉樹的鋸齒形層次遍歷