docs: def add_node(self, node, weight=None):
          """
          Adds a single node to the Graph.
  
          Parameters
          ----------
          node: str, int, or any hashable python object.
              The node to add to the graph.
  
          weight: int, float
              The weight of the node.
  
          Examples
          --------
          >>> from pgmpy.base import DAG
          >>> G = DAG()
          >>> G.add_node(node='A')
          >>> sorted(G.nodes())
          ['A']
  
          Adding a node with some weight.
          >>> G.add_node(node='B', weight=0.3)
  
          The weight of these nodes can be accessed as:
          >>> G.node['B']
          {'weight': 0.3}
          >>> G.node['A']
          {'weight': None}
          """
  
          # Check for networkx 2.0 syntax
          if isinstance(node, tuple) and len(node) == 2 and isinstance(node[1], dict):
              node, attrs = node
              if attrs.get('weight', None) is not None:
                  attrs['weight'] = weight
          else:
              attrs = {'weight': weight}
  
          super(DAG, self).add_node(node, weight=weight)