def add_edge(self, u, v=None): if v is None: (u,v)=u # no v given, assume u is an edge tuple if self.has_edge(u,v): return # no parallel edges elif u in self and v in self: raise NetworkXError, "adding edge %s-%s not allowed in tree"%(u,v) elif u in self or v in self: DiGraph.add_edge(self,u,v) # u->v return elif len(self.adj)==0: # first leaf DiGraph.add_edge(self,u,v) # u->v return else: raise NetworkXError("adding edge %s-%s not allowed in tree"%(u,v))
def add_edge(self, u, v=None): if v is None: (u, v) = u # no v given, assume u is an edge tuple if self.has_edge(u, v): return # no parallel edges elif u in self and v in self: raise NetworkXError, "adding edge %s-%s not allowed in tree" % (u, v) elif u in self or v in self: DiGraph.add_edge(self, u, v) # u->v return elif len(self.adj) == 0: # first leaf DiGraph.add_edge(self, u, v) # u->v return else: raise NetworkXError("adding edge %s-%s not allowed in tree" % (u, v))
def __init__(self, data=None, **kwds): DiGraph.__init__(self, **kwds) if data is not None: try: # build a rooted tree D = DiGraph() for (child, parent) in data.par.iteritems(): D.add_edge(parent, child) except AttributeError: D = DiGraph(data) except: # else nothing we can do raise NetworkXError, "Data %s is not a rooted tree:" % data if D.order() == D.size() + 1: self.pred = D.pred.copy() self.succ = D.succ.copy() self.adj = self.succ del D else: # not a tree raise NetworkXError, "Data %s is not a rooted tree:" % data
def __init__(self,data=None,**kwds): DiGraph.__init__(self,**kwds) if data is not None: try: # build a rooted tree D=DiGraph() for (child,parent) in data.par.iteritems(): D.add_edge(parent,child) except AttributeError: D=DiGraph(data) except: # else nothing we can do raise NetworkXError, "Data %s is not a rooted tree:"%data if D.order()==D.size()+1: self.pred=D.pred.copy() self.succ=D.succ.copy() self.adj=self.succ del D else: # not a tree raise NetworkXError, "Data %s is not a rooted tree:"%data