docs: def minimum_spanning_tree_kruskal(self, display = None, components = None):
          '''
          API: minimum_spanning_tree_kruskal(self, display = None,
                                             components = None)
          Description:
          Determines a minimum spanning tree using Kruskal's Algorithm.
          Input:
              display: Display method.
              component: component number.
          Post:
              'color' attribute of nodes and edges may change.
          Return:
              Returns list of edges where edges are tuples in (source,sink)
              format.
          '''
          if display == None:
              display = self.attr['display']
          else:
              self.set_display_mode(display)
          if components is None:
              components = DisjointSet(display = display, layout = 'dot',
                                       optimize = False)
          sorted_edge_list = sorted(self.get_edge_list(), key=self.get_edge_cost)
          edges = []
          for n in self.get_node_list():
              components.add([n])
          components.display()
          for e in sorted_edge_list:
              if len(edges) == len(self.get_node_list()) - 1:
                  break
              self.set_edge_attr(e[0], e[1], 'color', 'yellow')
              self.display()
              if components.union(e[0], e[1]):
                  self.set_edge_attr(e[0], e[1], 'color', 'green')
                  self.display()
                  edges.append(e)
              else:
                  self.set_edge_attr(e[0], e[1], 'color', 'black')
                  self.display()
              components.display()
          return edges