leetcode_gym/_problems/binaryTreeLevelOrder.md
2026-08-25 19:14:07 -06:00

1.7 KiB

layout, title, last_solved, category, leetcode_url, status
layout title last_solved category leetcode_url status
page Binary Tree Level Order Traversal 2020-07-28 bfs/dfs https://leetcode.com/problems/binary-tree-level-order-traversal Solved

Problem

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

For example:
Given binary tree [3,9,20,null,null,15,7],
    3
   / \
  9  20
    /  \
   15   7
return its level order traversal as:
[
  [3],
  [9,20],
  [15,7]
]

Solution

BFS

{% highlight python %}

def levelOrder(self, root: TreeNode) -> List[List[int]]:

if not root: return []

q = [root]
output = []

while q:
    
    level = []
    
    for _ in range(len(q)):
    
        curr = q.pop(0)

        if curr:

            level.append(curr.val)

            if curr.left: q.append(curr.left)
            if curr.right: q.append(curr.right)

    output.append(level)

return output

{% endhighlight %}


DFS

{% highlight python %}

def levelOrder(self, root: TreeNode) -> List[List[int]]:
    
    if not root: return []
    
    output = []
    
    def dfs(node, level, output):
    
        if not node:
            return
        
        if len(output) <= level:    # create new inner list if level doesn't exist [[], []], so you can do `output[level]=xxx' later
            output += [[]]      # or output.append([])
        
        dfs(node.left, level+1, output)
        dfs(node.right, level+1, output)
        
        output[level].append(node.val)

    dfs(root, 0, output)
    return output

{% endhighlight %}

image1