fork(1) download
  1. class Node:
  2. def __init__(self, name=None, parent=None, available=True):
  3. self.name = name
  4. self.parent = parent
  5. self.available = available
  6. self.children = []
  7.  
  8. def next_node(self):
  9. return None # TODO
  10.  
  11.  
  12. def print_tree(node, only_available=False):
  13. todo = [node]
  14. while todo:
  15. node = todo.pop()
  16. if only_available and not node.available:
  17. continue
  18. todo.extend(reversed(node.children))
  19. print(node.name + (' (unavailable)' if not node.available else ''))
  20.  
  21.  
  22. def traverse(node):
  23. while True:
  24. print(node.name)
  25. node = node.next_node()
  26. if not node:
  27. break
  28.  
  29.  
  30. grandparent = Node(name='grandparent')
  31. parent0 = Node(name=' parent0')
  32. parent1 = Node(name=' parent1')
  33. parent2 = Node(name=' parent2', available=False)
  34. parent3 = Node(name=' parent3')
  35. child0 = Node(name=' child0', available=False)
  36. child1 = Node(name=' child1', available=False)
  37. child2 = Node(name=' child2', available=False)
  38. child3 = Node(name=' child3')
  39. child4 = Node(name=' child4')
  40. child5 = Node(name=' child5')
  41. child6 = Node(name=' child6', available=False)
  42. grandchild0 = Node(name=' grandchild0')
  43. grandchild1 = Node(name=' grandchild1')
  44. grandchild2 = Node(name=' grandchild2')
  45. grandparent.children = [parent0, parent1, parent2, parent3]
  46. parent0.children = [child0, child1]
  47. parent1.children = [child2, child3]
  48. parent2.children = [child4]
  49. parent3.children = [child5, child6]
  50. child0.children = [grandchild0, grandchild1]
  51. child3.children = [grandchild2]
  52. print('Full node tree:\n')
  53. print_tree(grandparent, only_available=False)
  54. print('\n\nGoal sequence:\n')
  55. print_tree(grandparent, only_available=True)
  56. print('\n\nTraverse using Node.next_node() method (must be equal to "Goal sequence"):\n')
  57. traverse(grandparent)
Success #stdin #stdout 0.03s 9264KB
stdin
Standard input is empty
stdout
Full node tree:

grandparent
    parent0
        child0 (unavailable)
            grandchild0
            grandchild1
        child1 (unavailable)
    parent1
        child2 (unavailable)
        child3
            grandchild2
    parent2 (unavailable)
        child4
    parent3
        child5
        child6 (unavailable)


Goal sequence:

grandparent
    parent0
    parent1
        child3
            grandchild2
    parent3
        child5


Traverse using Node.next_node() method (must be equal to "Goal sequence"):

grandparent