6. Binary Tree Level Order Traversal II
Given the root of a binary tree, return the bottom-up level order traversal of its nodes' values. (i.e., from left to right, level by level from leaf to root).
Example 1:

Input: root = [3,9,20,null,null,15,7]
Output: [[15,7],[9,20],[3]]Example 2:
Input: root = [1]
Output: [[1]]Example 3:
Input: root = []
Output: []Solution: (BFS  + DFS)
class Solution
{
public:
    vector<vector<int>> levelOrderBottom(TreeNode *root)
    {
        queue<TreeNode *> q;
        stack<vector<int>> st;
        vector<vector<int>> res;
        
        if(!root){
            return res;
        }
        q.push(root);
        while (!q.empty())
        {
            int s = q.size();
            vector<int> v;
            while (s--)
            {
                TreeNode *t = q.front();
                v.push_back(t->val);
                q.pop();
                if (t->left)
                {
                    q.push(t->left);
                }
                if (t->right)
                {
                    q.push(t->right);
                }
            }
            st.push(v);
        }
        while (!st.empty())
        {
            res.push_back(st.top());
            st.pop();
        }
        
        return res;
    }
};Last updated
Was this helpful?