input: Write a python function to perform level order traversal of a binary tree.
  assert print_level_order(create_tree([1, 2, 3, None, 4, 5, 6])) == "1 2 3 4 5 6 "
  assert print_level_order(create_tree([1, None, 2, 3])) == "1 2 3 "
  assert print_level_order(create_tree([])) == ""
output: def print_level_order(root):
      if not root:
          return ""
      
      queue = [root]
      result = ""
      
      while queue:
          node = queue.pop(0)
          result += str(node.val) + " "
          
          if node.left:
              queue.append(node.left)
          if node.right:
              queue.append(node.right)
      
      return result
  
  class TreeNode:
      def __init__(self, val=0, left=None, right=None):
          self.val = val
          self.left = left
          self.right = right
  
  def create_tree(values):
      if not values:
          return None
      root = TreeNode(values[0])
      queue = [root]
      i = 1
      
      while queue and i < values.length:
          node = queue.pop(0)
          if values[i] is not None:
              node.left = TreeNode(values[i])
              queue.append(node.left)
          i += 1
          if i < len(values) and values[i] is not None:
              node.right = TreeNode(values[i])
              queue.append(node.right)
          i += 1
      return root