code: def dfs_postorder(self, reverse=False):
          
          stack = deque()
          stack.append(self)
          visited = set()
          while stack:
              node = stack.pop()
              if node in visited:
                  yield node
              else:
                  visited.add(node)
                  stack.append(node)
                  if hasattr(node, "childs"):
                      if reverse:
                          stack.extend(node.childs)
                      else:
                          stack.extend(node.childs[::-1])
docs: Generator that returns each element of the tree in Postorder order.
          Keyword arguments:
          reverse -- if true, the search is done from right to left.