103. Binary Tree Zigzag Level Order Traversal

problem description

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

For example: Given binary tree [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

return its zigzag level order traversal as:

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

algorithm thought

zigzag层次遍历,分析之后得知,可以用两个栈来辅助遍历。参差遍历本来是用一个队列就行。但是这个用两个栈,然后定义一个bool变量指定现在是左到右还是右到左,分别用一个栈辅助遍历。最后处理方式和层次遍历一样

使用两个栈的方法肯定还有优化的地方,去看了discuss之后,发现可以直接使用一个队列来做。最后遍历的结果需保存在一个vector中,我们默认只能push_back但是其实可以先定义好vector,最后看情况从左右分别将结果放置进去。

code

algorithm analysis

遍历问题时间复杂度还是一样的,都是O(n)

Last updated