103. 二叉树的锯齿形层序遍历

leetcode-103. 二叉树的锯齿形层序遍历

这里使用的是正常层序遍历再翻转的方法,这样在实现上更简单,官方解也是这么写的。实际上双端队列的方法其实更符合题目的原意。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Solution {
public:
vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
deque<TreeNode*> st;
vector<vector<int>> result;
if(root != nullptr)
st.push_back(root);
int depth = 0;
while(!st.empty())
{
int size = st.size();
vector<int> temp;
for(int i = 0; i < size; i++)
{
TreeNode* node = st.back();
st.pop_back();
temp.push_back(node->val);
if(node->left)
{
st.push_front(node->left);
}
if(node->right)
{
st.push_front(node->right);
}

}
if(depth%2 == 1)
reverse(temp.begin(),temp.end());
result.push_back(temp);
depth++;
}
return result;
}
};