【问题】从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
【思路】层次遍历,层次遍历,层次遍历,然后使用队列的size,用于判断每一行的个数,然后,一次遍历一次直接遍历一行。
/* 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(pRoot == nullptr) return res; queue<TreeNode*> que; que.push(pRoot); while(!que.empty()){ int size = que.size(); vector<int> res_tmp; while(size--){ TreeNode* tmp = que.front(); que.pop(); res_tmp.push_back(tmp->val); if(tmp->left != nullptr) que.push(tmp->left); if(tmp->right != nullptr) que.push(tmp->right); } res.push_back(res_tmp); } return res; } };