Tree Binary Tree Level Order Traversal II

https://leetcode.com/problems/binary-tree-level-order-traversal-ii/#/description

这题不难主要贴出使用vector和queue的两种算法(利用queue思路比较巧妙同时也比前者快)。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector<vector<int>> levelOrderBottom(TreeNode* root) {
        vector<vector<int>> vecResult;
        vector<vector<int>> res = coutVec0(root, 0, vecResult);
        reverse(res.begin(), res.end());
        return res;
    }
    vector<vector<int>> coutVec0(TreeNode* root,int level ,vector<vector<int>>& vecResult){
        if(!root){
            return vecResult;
        }
        
       if(level < vecResult.size()){
            //  vecResult[vecResult.size()-1-level].push_back(root->val);
            vecResult[level].push_back(root->val);
       }else if(level == vecResult.size()){
              vector<int> vec;
              vec.push_back(root->val);
            //   vecResult.insert(vecResult.begin(), vec);
            vecResult.push_back(vec);
        }
        ++level;
        coutVec0(root->left, level, vecResult);
        coutVec0(root->right, level, vecResult);
        return vecResult;
     }
};
vector<vector<int>> levelOrderBottom(TreeNode* root) {
    vector<vector<int>> res;
    if (!root) {
        return res;
    }
    queue<TreeNode*> t;
    t.push(root);
    while (!t.empty()) { //将"某一层"的节点的子节点都放到队列中,并把原来的节点出列
        vector<int> tn;
        int cnt = t.size();
        for (unsigned int i = 0; i < cnt; ++i) {
            TreeNode *cur = t.front();
            tn.push_back(cur->val);
            t.pop();
            if (cur->left)
                    t.push(cur->left);
            if (cur->right)
                t.push(cur->right);
        }
        //do not use insert() here,it cost too much time.
        //use reverse() insteadly
        res.push_back(tn);
    }
    reverse(res.begin(), res.end());
    return res;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,776评论 0 33
  • LeetCode 刷题随手记 - 第一部分 前 256 题(非会员),仅算法题,的吐槽 https://leetc...
    蕾娜漢默阅读 17,941评论 2 36
  • 107. Binary Tree Level Order Traversal II 题目: https://lee...
    oo上海阅读 169评论 0 0
  • 十年时间,初次遇见的白衣少年,他只是笑的十分阳光明媚,就是因为如此干净的脸庞,让人一见钟情。不知道怎么办?当时因为...
    七娘_susu阅读 255评论 0 0
  • 国画临摹了下懒猫。自己看着画了一只猫咪
    猫恋一夏阅读 241评论 4 5