103. Binary Tree Zigzag Level Order Traversal

Leetcode

https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/arrow-up-right

題目

Given the root of a binary tree, return the zigzag level order traversal of its nodes' values. (i.e., from left to right, then right to left for the next level and alternate between).

Example 1:

Input: root = [3,9,20,null,null,15,7]
Output: [[3],[20,9],[15,7]]

Example 2:

Input: root = [1]
Output: [[1]]

Example 3:

Input: root = []
Output: []

解答

  • 方法一

BFS

記錄每層的高度,第一層高度為 1 由左至右排序,第二層高度為 2 由右至左排序 ...

Runtime: 91 ms, faster than 43.30% of JavaScript online submissions for Binary Tree Zigzag Level Order Traversal.

Memory Usage: 44.2 MB, less than 47.39% of JavaScript online submissions for Binary Tree Zigzag Level Order Traversal.

  • 方法二

BFS

isOrderLeft 記憶是否由左往右排

levelList 記錄每層的節點

queue 中新增 null 為分隔符號,代表這一層的元素排列結尾

Runtime: 64 ms, faster than 91.93% of JavaScript online submissions for Binary Tree Zigzag Level Order Traversal.

Memory Usage: 44.3 MB, less than 34.32% of JavaScript online submissions for Binary Tree Zigzag Level Order Traversal.

  • 方法三

DFS

level 紀錄目前節點在第幾層,並根據 level 的單雙判斷加入元素時是要從左邊(push)或右邊(unshift)加入

Runtime: 81 ms, faster than 61.48% of JavaScript online submissions for Binary Tree Zigzag Level Order Traversal.

Memory Usage: 44.4 MB, less than 13.69% of JavaScript online submissions for Binary Tree Zigzag Level Order Traversal.

Last updated