题目链接:
https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/
题目描述:
将一个树中的节点元素,按以下形式存储。
For example:
Given binary tree {3,9,20,#,#,15,7},
3
/ \
9 20
/ \
15 7
return its zigzag level order traversal as:
[
[3],
[20,9],
[15,7]
]
题目分析:
跟之前leetcode上面一道题(102. Binary Tree Level Order Traversal)做法差不多,前序遍历实现存储层次遍历的节点。只是再需将存储奇数层的节点元素翻转一次(从0层计数)。
代码:
class Solution {
public:
vector<vector<int>> result;
void preorderTraversal(TreeNode* root,int level){
if(root!=NULL){
if(result.size()==level){
vector<int> v;
result.push_back(v);
}
result[level].push_back(root->val);
preorderTraversal(root->left,level+1);
preorderTraversal(root->right,level+1);
}
}
vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
preorderTraversal(root,0);
for(int i=0;i<result.size();i++){
if(i%2!=0){
reverse(result[i].begin(),result[i].end());
}
}
return result;
}
};