美文网首页
[LeetCode] 107. Binary Tree Leve

[LeetCode] 107. Binary Tree Leve

作者: 弱花 | 来源:发表于2018-11-02 11:14 被阅读0次

    原题

    层序遍历,从自底向上按层输出。 左→右→中
    解法一 :
    DFS,求出自顶向下的,最后返回时反转一下。

    class Solution
    {
    public:
      vector<vector<int>> res;
      vector<vector<int>> levelOrderBottom(TreeNode *root)
      {
        int level = 0;
        dfs(root, level);
        reverse(res.begin(), res.end());
        return res;
      }
      void dfs(TreeNode *root, int level)
      {
        if (root == NULL)
          return;
        if (level == res.size())
          res.push_back({});
        dfs(root->left, level + 1);
        dfs(root->right, level + 1);
        res[level].push_back(root->val);
      }
    };
    

    解法二:
    BFS

    class Solution
    {
    public:
      vector<vector<int>> res;
      vector<vector<int>> levelOrderBottom(TreeNode *root)
      {
        if (root == NULL)
          return res;
        int level = 0;
        queue<TreeNode *> que;
        que.push(root);
        while (!que.empty())
        {
          vector<int> cur;
          int level = que.size();
          for (int i = 0; i < level; i++)
          {
            TreeNode *temp = que.front();
            que.pop();
            cur.push_back(temp->val);
    
            if (temp->left != NULL)
              que.push(temp->left);
            if (temp->right != NULL)
              que.push(temp->right);
          }
          res.insert(res.begin(), cur);
        }
        return res;
      }
    };
    

    相关文章

      网友评论

          本文标题:[LeetCode] 107. Binary Tree Leve

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