fork download
  1. class Node:
  2. def __init__(self, key):
  3. self.key = key
  4. self.left = None
  5. self.right = None
  6.  
  7. def createNode(parent, i, created, root):
  8. if created[i] is not None:
  9. created[i] = Node(i)
  10. if parent[i] == -1:
  11. root[0] = created[i]
  12. return
  13. if created[parent[i]] is None:
  14. createNode(parent, parent[i], created, root )
  15. p = created[parent[i]]
  16. if p.left is None:
  17. p.left = created[i]
  18. else:
  19. p.right = created[i]
  20.  
  21. def createTree(parent):
  22. n = len(parent)
  23. created = [None for i in range(n+1)]
  24. root = [None]
  25. for i in range(n):
  26. createNode(parent, i, created, root)
  27. return root[0]
  28.  
  29. def printLevelOrder(root):
  30. h = height(root)
  31. for i in range(1, h+1):
  32. printGivenLevel(root, i)
  33.  
  34.  
  35. def printGivenLevel(root , level):
  36. if root is None:
  37. return
  38. if level == 1:
  39. print "%d" %(root.data),
  40. elif level > 1 :
  41. printGivenLevel(root.left , level-1)
  42. printGivenLevel(root.right , level-1)
  43.  
  44. def height(node):
  45. if node is None:
  46. return 0
  47. else :
  48. lheight = height(node.left)
  49. rheight = height(node.right)
  50.  
  51. if lheight > rheight :
  52. return lheight+1
  53. else:
  54. return rheight+1
  55.  
  56. n=int(raw_input())
  57. parent = raw_input()
  58. numbers = map(int, parent.split())
  59. root = createTree(parent)
  60. printLevelOrder(root)
Runtime error #stdin #stdout #stderr 0.01s 23352KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Traceback (most recent call last):
  File "prog.py", line 56, in <module>
EOFError: EOF when reading a line