/* 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> > res; if( nullptr==pRoot ) { return res; } queue< TreeNode * > solve; solve.push( pRoot ); int count=1; int tag=1;//表示正序 while( !solve.empty() ) { vector<int> temp; int countTemp=0; while( count-- ) { TreeNode * Help=solve.front(); solve.pop(); temp.push_back( Help->val ); if( nullptr!=Help->left ) { solve.push( Help->left ); ++countTemp; } if( nullptr!=Help->right ) { solve.push( Help->right ); ++countTemp; } } count=countTemp; if( -1==tag ) { reverse( temp.begin(), temp.end() ); } res.push_back(temp); tag*=( -1 ); } return res; } };