1. 程式人生 > >LeetCode 第103題 二叉樹的鋸齒形層次遍歷

LeetCode 第103題 二叉樹的鋸齒形層次遍歷

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題 二叉樹的鋸齒形層次遍歷