Fundamentals 7 min read

Binary Tree Level Order Traversal (LeetCode 102) – Problem Description and Solutions in Java, C++, C, and Python

The article humorously discusses Huawei cafeteria competition before presenting LeetCode problem 102, which requires a breadth‑first level order traversal of a binary tree, and provides complete Java, C++, C, and Python implementations that use a queue to process each tree level.

IT Services Circle
IT Services Circle
IT Services Circle
Binary Tree Level Order Traversal (LeetCode 102) – Problem Description and Solutions in Java, C++, C, and Python

The article begins with a humorous observation about competition between two Huawei cafeterias, likening it to market competition and noting the impact of performance rankings.

It then introduces LeetCode problem 102, which asks for a level‑order (breadth‑first) traversal of a binary tree, providing the problem description, input and output examples, and constraints on node values and tree size.

After the problem statement, detailed solution code is presented in four languages—Java, C++, C, and Python—each using a queue to perform BFS, count nodes per level, and collect values into a list of lists representing each tree level.

All code snippets are shown in full and wrapped in

tags to preserve their original formatting.</p><p>Java solution:</p><code>public List<List<Integer>> levelOrder(TreeNode root) {
    List<List<Integer>> ans = new LinkedList<>();
    if (root == null)
        return ans;
    Queue<TreeNode> queue = new LinkedList<>(); // 创建队列
    queue.offer(root); // 把根节点添加到队列中
    while (!queue.isEmpty()) {
        int levelCount = queue.size(); // 每层的节点个数
        List<Integer> subList = new ArrayList<>();
        for (int i = 0; i < levelCount; i++) {
            TreeNode cur = queue.poll(); // 节点出队
            subList.add(cur.val);
            if (cur.left != null)
                queue.offer(cur.left);
            if (cur.right != null)
                queue.offer(cur.right);
        }
        ans.add(subList); // 当前层的集合添加到队列中。
    }
    return ans;
}

C++ solution:

vector<vector<int>> levelOrder(TreeNode *root) {
    vector<vector<int>> ans;
    if (root == nullptr)
        return ans;
    queue<TreeNode *> q; // 创建队列
    q.push(root); // 把根节点添加到队列中
    while (!q.empty()) {
        int levelCount = q.size(); // 每层的节点个数
        vector<int> subList;
        for (int i = 0; i < levelCount; i++) {
            TreeNode *cur = q.front();
            q.pop(); // 节点出队
            subList.push_back(cur->val);
            if (cur->left)
                q.push(cur->left);
            if (cur->right)
                q.push(cur->right);
        }
        ans.push_back(subList); // 当前层的集合添加到队列中。
    }
    return ans;
}

C solution:

int **levelOrder(struct TreeNode *root, int *returnSize, int **returnColumnSizes) {
    *returnSize = 0;
    int **ans = (int **)malloc(sizeof(int *) * 2001);
    if (root == NULL)
        return ans;
    *returnColumnSizes = malloc(sizeof(int) * 2001);
    struct TreeNode **q = (struct TreeNode **)malloc(sizeof(struct TreeNode *) * 2001); // 创建队列
    int left = 0, right = 0; // 左闭右开
    q[right++] = root; // 把根节点添加到队列中
    while (left != right) {
        int levelCount = right - left; // 每层的节点个数
        int *subList = (int *)malloc(sizeof(int) * levelCount);
        for (int i = 0; i < levelCount; i++) {
            struct TreeNode *cur = q[left++]; // 节点出队
            subList[i] = cur->val;
            if (cur->left)
                q[right++] = cur->left;
            if (cur->right)
                q[right++] = cur->right;
        }
        (*returnColumnSizes)[*returnSize] = levelCount;
        ans[(*returnSize)++] = subList; // 当前层的集合添加到队列中。
    }
    return ans;
}

Python solution:

def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
    ans = []
    if root is None:
        return ans
    q = deque([root])  # 创建队列
    while q:
        levelCount = len(q)  # 每层的节点个数
        subList = []
        for _ in range(levelCount):
            cur = q.popleft()  # 节点出队
            subList.append(cur.val)
            if cur.left:
                q.append(cur.left)
            if cur.right:
                q.append(cur.right)
        ans.append(subList)  # 当前层的集合添加到队列中。
    return ans
Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

JavaalgorithmPythonLeetCodebinary treeC++BFSlevel order traversal
IT Services Circle
Written by

IT Services Circle

Delivering cutting-edge internet insights and practical learning resources. We're a passionate and principled IT media platform.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.