题目描述:
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。
例如:
给定二叉树: [3,9,20,null,null,15,7]
返回其层次遍历结果:
[
[3],
[20,9],
[15,7]
]
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>>ans;
stack<TreeNode*> s;
stack<TreeNode*> s1;
if(root!=NULL)
s.push(root);
int i = 1;
while(!s.empty()||!s1.empty()){
if(i%2 == 0){
vector<int>bns;
int a = s1.size();
for(int j=0;j<a;j++){
TreeNode *n = s1.top();
s1.pop();
if(n->right!=NULL)
s.push(n->right);
if(n->left!=NULL)
s.push(n->left);
bns.push_back(n->val);
}
ans.push_back(bns);
}
if(i%2! = 0){
vector<int>cns;
int b = s.size();
for(int j=0;j<b;j++){
TreeNode* n=s.top();
s.pop();
if(n->left!=NULL)
s1.push(n->left);
if(n->right!=NULL)
s1.push(n->right);
cns.push_back(n->val);
}
ans.push_back(cns);
}
i++;
}
return ans;
}
};