解題思路
用兩個 queue,一個是現在的 level 的所有 node,一個是下個 level 的 node。
當當前 level 的 node 的 queue 清空,就換成下個 level。一直重複直到空了為止。
程式碼
class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> ans; if(root == nullptr) return ans; queue<TreeNode*> q1; queue<TreeNode*> q2; int num = 1; q1.push(root); vector<int> v; while(!q1.empty()) { v.push_back(q1.front()->val); if(q1.front()->left != nullptr) q2.push(q1.front()->left); if(q1.front()->right != nullptr) q2.push(q1.front()->right); cout << v[v.size() - 1] << " "<< v.size() << endl; q1.pop(); if(q1.empty()) { swap(q1, q2); ans.push_back(v); v.clear(); } } return ans; } };
沒有留言:
張貼留言