code: def get_adjacency_matrix(self, show_in_console=False):
          
          self.links = [[i,j] for i in self.graph for j in self.graph[i]]
          all_nodes = []
          op = [] 
          for node in self.graph:
              all_nodes.append(node)  # to get the root node
              for connection in self.graph[node]:
                  all_nodes.append(connection)
          self.nodes = sorted(list(set(all_nodes)))
          if show_in_console is not False:
              print (len(self.nodes), 'nodes:', self.nodes)
              print (len(self.links), 'links:', self.links)
          
          for y in range(len(self.nodes)):
              row = []
              for x in range(len(self.nodes)):
                  match = False
                  for l in self.links:
                      if self.nodes[x] == l[0] and self.nodes[y] == l[1]:
                          match = True
                      if self.nodes[x] == l[1] and self.nodes[y] == l[0]:
                          match = True
                          
                  if match is True:
                      row.append(1)
                  else:
                      row.append(0)
                  
              op.append(row)
              
          if show_in_console is not False:
              for row in op:
                  print(row)
              
          return op
docs: return the matrix as a list of lists 
          raw graph =  {'1': ['2', '3', '4'], '2': ['6', '7']}
          6 nodes: ['1', '2', '3', '4', '6', '7']
          5 links: [['1', '2'], ['1', '3'], ['1', '4'], ['2', '6'], ['2', '7']]
          [0, 1, 1, 1, 0, 0]
          [1, 0, 0, 0, 1, 1]
          [1, 0, 0, 0, 0, 0]
          [1, 0, 0, 0, 0, 0]
          [0, 1, 0, 0, 0, 0]
          [0, 1, 0, 0, 0, 0]