from collections import defaultdict
from queue import Queue
class Node:
def __init__(self,data):
self.val = data
self.left = None
self.right = None
def levelOrderTraversal(root):
result = defaultdict(list)
if not root:
return result
q = Queue()
level = 0
q.put((level, root))
while not q.empty():
e = q.get()
level = e[0]
#Throws error: TypeError: 'Node' object does not support indexing
node = e[1]
result[level].append(node.val)
if node.left:
q.put((level + 1,node.left))
if node.right:
q.put((level + 1,node.right))
return result
def test1():
root = Node(1)
root.left = Node(2)
root.right = Node(3)
return levelOrderTraversal(root)
print(test1()) # prints defaultdict(<class 'list'>, {0: [1], 1: [2, 3]})
ZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKZnJvbSBxdWV1ZSBpbXBvcnQgUXVldWUKCmNsYXNzIE5vZGU6CiAgICBkZWYgX19pbml0X18oc2VsZixkYXRhKToKICAgICAgICBzZWxmLnZhbCA9IGRhdGEKICAgICAgICBzZWxmLmxlZnQgPSBOb25lCiAgICAgICAgc2VsZi5yaWdodCA9IE5vbmUKCmRlZiBsZXZlbE9yZGVyVHJhdmVyc2FsKHJvb3QpOgogICAgcmVzdWx0ID0gZGVmYXVsdGRpY3QobGlzdCkKICAgIGlmIG5vdCByb290OgogICAgICAgIHJldHVybiByZXN1bHQKICAgIHEgPSBRdWV1ZSgpCiAgICBsZXZlbCA9IDAKICAgIHEucHV0KChsZXZlbCwgcm9vdCkpCgogICAgd2hpbGUgbm90IHEuZW1wdHkoKToKICAgICAgICBlID0gcS5nZXQoKQogICAgICAgIGxldmVsID0gZVswXQogICAgICAgICAgICAjVGhyb3dzIGVycm9yOiBUeXBlRXJyb3I6ICdOb2RlJyBvYmplY3QgZG9lcyBub3Qgc3VwcG9ydCBpbmRleGluZwogICAgICAgIG5vZGUgPSBlWzFdCiAgICAgICAgcmVzdWx0W2xldmVsXS5hcHBlbmQobm9kZS52YWwpCiAgICAgICAgaWYgbm9kZS5sZWZ0OgogICAgICAgICAgICBxLnB1dCgobGV2ZWwgKyAxLG5vZGUubGVmdCkpCiAgICAgICAgaWYgbm9kZS5yaWdodDoKICAgICAgICAgICAgcS5wdXQoKGxldmVsICsgMSxub2RlLnJpZ2h0KSkKICAgIHJldHVybiByZXN1bHQKCmRlZiB0ZXN0MSgpOgogICAgcm9vdCA9IE5vZGUoMSkKICAgIHJvb3QubGVmdCA9IE5vZGUoMikKICAgIHJvb3QucmlnaHQgPSBOb2RlKDMpCiAgICByZXR1cm4gbGV2ZWxPcmRlclRyYXZlcnNhbChyb290KQoKcHJpbnQodGVzdDEoKSkgIyBwcmludHMgZGVmYXVsdGRpY3QoPGNsYXNzICdsaXN0Jz4sIHswOiBbMV0sIDE6IFsyLCAzXX0pCg==