2023年1月20日 星期五

102. Binary Tree Level Order Traversal

解題思路

用兩個 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;
    }
};

沒有留言:

張貼留言