Skip to content

Instantly share code, notes, and snippets.

@rohanp
Last active February 27, 2017 07:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rohanp/686d48fb6d5ee6027680e51b9e3590b1 to your computer and use it in GitHub Desktop.
Save rohanp/686d48fb6d5ee6027680e51b9e3590b1 to your computer and use it in GitHub Desktop.
class Node:
def __init__(self, val, left=None, right=None):
self.val = val
self.left = left
self.right = right
def levelOrderWrong1(root):
curr_level = [root]
levels = []
while root and curr_level:
levels.append([node.val for node in curr_level])
curr_level = [n for n in (node.left, node.right) for node in curr_level if n]
return levels
def levelOrderWrong2(root):
curr_level = [root]
levels = []
while root and curr_level:
levels.append([node.val for node in curr_level])
curr_level = [n for n in (node.left, node.right) if n for node in curr_level]
return levels
def levelOrderRight(root):
curr_level = [root]
levels = []
while root and curr_level:
levels.append([node.val for node in curr_level])
temp = []
for node in curr_level:
for n in (node.left, node.right):
if n:
temp.append(n)
curr_level = temp
return levels
root = Node(3, Node(9), Node(20, Node(15), Node(7)))
print(levelOrderWrong1(root))
print(levelOrderWrong2(root))
print(levelOrderRight(root))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment