题解 | 把二叉树打印成多行
把二叉树打印成多行
https://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: vector<vector<int> > Print(TreeNode* pRoot) { if(!pRoot){ return {}; } vector< vector<int> > ans; queue< TreeNode* > q; q.push(pRoot); int size = 1; while(!q.empty()){ int new_size=0; vector< int > temp; while( size>0 ){ //一层的处理 TreeNode* node = q.front();q.pop(); temp.push_back(node->val); if(node->left){ //已经假设队列里不放空指针了,开始就不能放,开始就得判断 q.push(node->left); new_size++; } if(node->right){ q.push(node->right); new_size++; } size--; } ans.push_back(temp); //一层完成之后,加入 size = new_size; } return ans; } };