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