グラフでBFSを使用してノードから到達可能なすべてのノードを検索するPythonプログラム
ツリーのすべてのノードの合計を見つける必要がある場合は、クラスが作成されます。このクラスには、ルートノードの設定、ツリーへの要素の追加、特定の要素の検索、およびツリーの要素の追加を行うためのメソッドが含まれています。合計などを見つけます。これらのメソッドにアクセスして使用するために、クラスのインスタンスを作成できます。
以下は同じのデモンストレーションです-
例
from collections import deque def add_edge(v, w): global visited_node, adj adj[v].append(w) adj[w].append(v) def BFS_operation(component_num, src): global visited_node, adj queue = deque() queue.append(src) visited_node[src] = 1 reachableNodes = [] while (len(queue) > 0): u = queue.popleft() reachableNodes.append(u) for itr in adj[u]: if (visited_node[itr] == 0): visited_node[itr] = 1 queue.append(itr) return reachableNodes def displayReachableNodes(m): for i in m: print(i, end = " ") print() def findReachableNodes(my_list, n): global V, adj, visited_node a = [] component_num = 0 for i in range(n): u = my_list[i] if (visited_node[u] == 0): component_num += 1 a = BFS_operation(component_num, u) print("The reachable nodes from ", u, " are") displayReachableNodes(a) V = 7 adj = [[] for i in range(V + 1)] visited_node = [0 for i in range(V + 1)] add_edge(1, 2) add_edge(2, 3) add_edge(3, 4) add_edge(3, 1) add_edge(5, 6) add_edge(5, 7) my_list = [ 2, 4, 5, 7 ] arr_len = len(my_list) findReachableNodes(my_list, arr_len)
出力
The reachable nodes from 2 are 2 1 3 4 The reachable nodes from 4 are 2 1 3 4 The reachable nodes from 5 are 5 6 7 The reachable nodes from 7 are 5 6 7
説明
-
必要なパッケージがインポートされます。
-
ツリーに要素を追加するのに役立つ「add_edge」という名前のメソッドが定義されています。
-
「BFS_operation」メソッドは、幅優先探索アプローチを使用してツリーをトラバースするのに役立ちます。
-
「displayReachableNodes」という名前のメソッドが定義されています。これは、特定のノードから到達できるノードを表示するのに役立ちます。
-
「findReachableNodes」という名前のメソッドが定義されており、ノードを反復処理し、要素に対して「BFS_operation」を実行します。
-
「add_edge」メソッドは、グラフにノードを追加します。
-
リストが定義され、コンソールに表示されます。
-
メソッドが呼び出され、出力がコンソールに表示されます。
-
Pythonを使用して適切なリーフノードペアの数を見つけるプログラム
二分木があるとします。および別の値の距離d。 2つの異なるリーフノードのペアは、これら2つのノード間の最短経路が距離dよりも小さいか、同じである場合に適切であると言われます。 したがって、入力が次のような場合 距離d=4の場合、パスの長さの距離が2であるため、ペアは(8,7)と(5,6)ですが、(7,5)または(8,6)または他のペアであるため、出力は2になります。パスの長さが5であり、d=4よりも大きいため適切ではありません これを解決するには、次の手順に従います- sol:=0 関数util()を定義します。これが定着します ルートがnullの場合、
-
Pythonを使用して、同じラベルを持つサブツリー内のノードの数を見つけるプログラム
ノードに0からn-1までの番号が付けられたn個のノードを持つルート化された一般ツリーがあるとします。各ノードには、小文字の英字のラベルがあります。ラベルはlabels配列の入力として指定されます。ここで、lables[i]にはi番目のノードのラベルが含まれています。ツリーはエッジリストで表され、各エッジeには[u、v]があり、uは親、vは子を表します。サイズnの配列Aを見つける必要があります。これは、iと同じラベルを持つi番目のノードのサブツリー内のノードの数を表します したがって、入力が次のような場合 ここで、n =5およびlabel=“ ccaca” ルートには同じラベルの子