2017-09-28 18 views
0

私は、Pythonでツリーを作成しています。親からツリーのルートノードまでのパスを見つける方法がありました。これは次のとおりです。ツリー内のノードのすべての親ノードを見つける

def get_sub_net(self, index): 
    node = self.nodes[index] 
    sub_net = [] 
    sub_net.append(node) 
    while node.parent is not None: 
     node = node.parent 
     sub_net.append(node) 
    return sub_net[::-1] 

各ノードが複数の親を持つことを許可しようとしています。問題が発生しています。 Noreddine-Kessa @

def sub_net(self, index): 
    node = self.nodes[index] 
    sub_net = [] 
    if node.parents == None: 
     return sub_net 
    else: 
     sub_net += node.parents 
     for i in node.parents: 
      while i is not None: 
       sub_net += i.parents 
       node = i 
       break 
    return sub_net[::-1] 

このグラフではなく、正しいツリー、だろうと指摘しました。あなたはノードのネットワークを使用する必要がある場合しかし、私はまた、自分自身の問題を解決し、私が定義することにより私に

def recursive_sub_net(self, node): 
    sub_net = [] 
    sub_net.append(node) 

    if node.parents is not None: 
     for i in node.parents: 
      sub_net += self.recursive_sub_net(i) 

    return sub_net 

答えて

1

を使用した溶液は、ツリー内のすべてのノードは、単一の親を持っている(と多くの祖先を持つことができます) (ツリーではない)グラフを使用する必要があります。

+0

あなたは正しいです、私は私の質問を更新します。 – chrisz

関連する問題