重点,通过奇数偶数交替的方式打印出来,//位运算判断奇数还是偶数,然后直接使用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; } };