重点,通过奇数偶数交替的方式打印出来,//位运算判断奇数还是偶数,然后直接使用list的reverse操作。以及按照层遍历的模板,
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int> > results;
if(!pRoot){
return results;
}
stack<TreeNode* > mid_result;
queue<TreeNode* > Q;
mid_result.push(pRoot);
Q.push(pRoot);
int level = 0;
while(!Q.empty()){
int size = Q.size();
vector<int> result;
while(size--){
TreeNode* tmp = Q.front();
Q.pop();
result.emplace_back(tmp->val);
if(tmp->left){
Q.push(tmp->left);
}
if(tmp->right){
Q.push(tmp->right);
}
}
//重点,通过奇数偶数交替的方式打印出来
level++;
if(!(level&1)){ //位运算判断奇数还是偶数,然后直接使用list的revers操作。
reverse(result.begin(),result.end());
}
results.push_back(result);
}
return results;
}
};
京公网安备 11010502036488号