1. 程式人生 > 其它 >103--二叉樹的鋸齒形層序遍歷--20201222leetcode

103--二叉樹的鋸齒形層序遍歷--20201222leetcode

技術標籤:leetcode筆記二叉樹leetcode層次遍歷鋸齒形

103-二叉樹的鋸齒形層序遍歷–20201222每日一題

00.問題描述

給定一個二叉樹,返回其節點值的鋸齒形層序遍歷。(即先從左往右,再從右往左進行下一層遍歷,以此類推,層與層之間交替進行)。

例如:
給定二叉樹 [3,9,20,null,null,15,7],

  3
 / \
9  20
  /  \
 15   7

返回鋸齒形層序遍歷如下:

[
  [3],
  [20,9],
  [15,7]
]

01.解題思路

先對二叉樹進行廣度優先遍歷,在遍歷的過程中,對偶數行進行reverse

02.程式碼

class Solution {
public List<List<Integer>> zigzagLevelOrder(TreeNode root) { List<List<Integer>> res = new ArrayList<List<Integer>>(); boolean flag = false;//true為左往右 if (root == null) return res; Queue<TreeNode> queue = new LinkedList
<TreeNode>(); queue.offer(root); while (!queue.isEmpty()) { int size = queue.size(); //取得每一層的長度 List<Integer> temp = new ArrayList<Integer>(); for (int i=0;i<size;i++){ TreeNode tree = queue.poll(); if
(tree.left != null) queue.offer(tree.left); if (tree.right != null) queue.offer(tree.right); temp.add(tree.val); } if (flag){ Collections.reverse(temp); } flag=!flag; res.add(temp); } return res; } }