Given a level_order list, which can include None values, how can a binary tree be constructed adhering to None values in the list i.e None nodes can't have any children (left or right values).
from typing import List, Optional
class Node():
def __init__(val: int=None, left: Optional[Node]=None, right: Optional[Node]=None):
self.val = val
self.left = left
self.right = right
def binary_tree(level_order: List, root=None): -> Node:
pass
For example, when level_order is [4, -7, -3, None, None, -9, -3, 9, -7, -4, None, 6, None, -6, -6, None, None, 0, 6, 5, None, 9, None, None, -1, -4, None, None, None, -2], the tree should look like this 
And when the level_order is [1, 2, 3, 4, 5], the tree should look like 
The following code generates binary tree while not respecting the None values in the list
def binary_tree(level_order, root=None):
ls = []
def insert_value(data, root):
newnode = Node(data)
if len(ls) != 0:
temp = ls[0]
if root is None:
root = newnode
elif temp.left is None:
temp.left = newnode
elif temp.right is None:
temp.right = newnode
_ = ls.pop(0)
ls.append(newnode)
return root
for i in range(len(level_order)):
root = insert_value(level_order[i], root)
return root
