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


    }

};