15 Jun 2024C++ / Python / TypeScriptEasy

Binary Tree Level Order Traversal II

Collected C++, Python, TypeScript solutions for binary tree level order traversal ii. Add a dedicated write-up later if you want deeper notes.

auto-generated entry for Binary Tree Level Order Traversal II. the solution files are available below.

solution files

  • C++ binary-tree-level-order-traversal-ii/synced-solution.cpp
  • Python binary-tree-level-order-traversal-ii/synced-solution.py
  • TypeScript binary-tree-level-order-traversal-ii/synced-solution.ts

Solution files

Pythonbinary-tree-level-order-traversal-ii/synced-solution.py
class Solution:
    def levelOrderBottom(self, root: Optional[TreeNode]) -> List[List[int]]:
        if not root:
            return []
        result = []
        queue = [root]
        while queue:
            level = []
            next_queue = []
            for node in queue:
                level.append(node.val)
                if node.left:
                    next_queue.append(node.left)
                if node.right:
                    next_queue.append(node.right)
            result.append(level)
            queue = next_queue
        return result[::-class="syntax-number">1]
C++binary-tree-level-order-traversal-ii/synced-solution.cpp
class Solution {
public:
    vector<vector<int>> levelOrderBottom(TreeNode* root) {
        vector<vector<int>> result;
        if (!root) return result;
        queue<TreeNode*> q;
        q.push(root);
        while (!q.empty()) {
            vector<int> level;
            int size = q.size();
            for (int i = class="syntax-number">0; i < size; i++) {
                TreeNode* node = q.front();
                q.pop();
                level.push_back(node->val);
                if (node->left) q.push(node->left);
                if (node->right) q.push(node->right);
            }
            result.push_back(level);
        }
        reverse(result.begin(), result.end());
        return result;
    }
};
TypeScriptbinary-tree-level-order-traversal-ii/synced-solution.ts
function levelOrderBottom(root: TreeNode | null): number[][] {
    const result: number[][] = [];
    if (!root) return result;
    const queue: TreeNode[] = [root];
    while (queue.length > class="syntax-number">0) {
        const level: number[] = [];
        const nextQueue: TreeNode[] = [];
        for (const node of queue) {
            level.push(node.val);
            if (node.left) nextQueue.push(node.left);
            if (node.right) nextQueue.push(node.right);
        }
        result.push(level);
        queue.splice(class="syntax-number">0, queue.length, ...nextQueue);
    }
    return result.reverse();
}