牛客網劍指offer-把二叉樹列印成多行
阿新 • • 發佈:2018-12-30
題目描述
從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。/* 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> > ans; if (pRoot == nullptr) return ans; queue<TreeNode*> q; q.push(pRoot); while (!q.empty()) { int len = q.size(); vector<int> vec; while (len--) { vec.push_back(q.front()->val); if (q.front()->left != nullptr) q.push(q.front()->left); if (q.front()->right != nullptr) q.push(q.front()->right); q.pop(); } ans.push_back(vec); } return ans; } };