code: def dfs_get_all_childs(self, root):
          
          self.nodes[root]['dfs_loop_status'] = 'DFS_CHECKED'
  
          ret = set()
          # Me
          ret.add(root)
          # And my sons
          ret.update(self.nodes[root]['sons'])
  
          for child in self.nodes[root]['sons']:
              # I just don't care about already checked children
              if self.nodes[child]['dfs_loop_status'] == 'DFS_UNCHECKED':
                  ret.update(self.dfs_get_all_childs(child))
  
          return list(ret)
docs: Recursively get all sons of this node
  
          :param root: node to get sons
          :type root:
          :return: sons
          :rtype: list