美文网首页
102.binary-tree-level-order-trav

102.binary-tree-level-order-trav

作者: Optimization | 来源:发表于2020-05-25 16:19 被阅读0次

same 429
递归

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        if(!root) return {};
        vector<vector<int>> ans;
        levelOrder(root, 0, ans);
        return ans;
    }
private:
    void levelOrder(TreeNode* root, int d, 
    vector<vector<int>>& ans){
        if(!root) return;
        // vector的初始化
        if(ans.size()<=d) ans.push_back({});
        ans[d].push_back(root->val);
        levelOrder(root->left, d+1, ans);
        levelOrder(root->right, d+1, ans);
    }
};

迭代

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        if(!root) return {};
        // deque
        deque<TreeNode*> q;
        vector<vector<int>> ans;
        q.push_back(root);
        int deep = 0;

        while(!q.empty()){
            int size = q.size();
            // init 
            ans.push_back({});
            while(size--) {
                TreeNode* n = q.front();q.pop_front();
                ans[deep].push_back(n->val);
                // none
                if(n->left) q.push_back(n->left);
                if(n->right) q.push_back(n->right);
            }
            deep++;
        }
        return ans;
    }
};

相关文章

网友评论

      本文标题:102.binary-tree-level-order-trav

      本文链接:https://www.haomeiwen.com/subject/duuyahtx.html