Python
 Computer >> コンピューター >  >> プログラミング >> Python

ツリー内のすべてのノードの合計を見つけるPythonプログラム


ツリー内のすべてのノードの合計を取得する必要がある場合は、「Tree_structure」クラスが作成され、ルート値を設定するメソッド、および他の値を追加するメソッドが定義されます。また、ツリー構造のすべての要素の合計を決定する方法もあります。ユーザーが選択できるさまざまなオプションが用意されています。ユーザーの選択に基づいて、操作はツリー要素に対して実行されます。

以下は同じのデモンストレーションです-

class Tree_structure:
   def __init__(self, data=None):
      self.key = data
      self.children = []

   def set_root(self, data):
      self.key = data

   def add_values(self, node):
      self.children.append(node)

   def search_val(self, key):
      if self.key == key:
         return self
      for child in self.children:
         temp = child.search(key)
         if temp is not None:
            return temp
      return None

   def summation_nodes(self):
      sum_val = self.key
      for child in self.children:
         sum_val = sum_val + child.summation_nodes()
      return sum_val

tree = None

print('Menu (no duplicate keys allowed)')
print('add <data> at root')
print('add <data> below <data>')
print('summation')
print('quit')

while True:
   my_input = input('What would you like to do? ').split()

   operation = my_input[0].strip().lower()
   if operation == 'add':
      data = int(my_input[1])
      newNode = Tree_structure(data)
      sub_op = my_input[2].strip().lower()
      if sub_op == 'at':
         tree = newNode
      elif sub_op == 'below':
         my_pos = my_input[3].strip().lower()
         key = int(my_pos)
         ref_node = None
         if tree is not None:
            ref_node = tree.search_val(key)
         if ref_node is None:
            print('No such key exists')
            continue
         ref_node.add_values(newNode)

   elif operation == 'summation':
      if tree is None:
         print('The tree is empty')
      else:
         summation_val = tree.summation_nodes()
         print('Sum of all the nodes is : {}'.format(summation_val))

   elif operation == 'quit':
      break

出力

Menu (no duplicate keys allowed)
add <data> at root
add <data> below <data>
summation
quit
What would you like to do? add 56 at root
What would you like to do? add 45 below 56
What would you like to do? add 23 below 56
What would you like to do? summation
Sum of all the nodes is : 124
What would you like to do?

説明

  • 「Tree_structure」クラスが作成されます。

  • 「キー」をTrueに設定し、ツリーの子に空のリストを設定します。

  • ツリーのルート値を設定するのに役立つ「set_root」関数があります。

  • ツリーに要素を追加するのに役立つ「add_vals」という名前のメソッドが定義されています。

  • ツリー内の要素の検索に役立つ「search_val」という名前の別のメソッドが定義されています。

  • 「summation_nodes」という名前の別のメソッドが定義されています。これは、ツリーのすべての要素/ノードの合計を取得するのに役立ちます。

  • これは再帰関数です。

  • 「ルートに追加」、「下に追加」、「合計」、「終了」などの4つのオプションがあります。

  • ユーザーが指定したオプションに応じて、それぞれの操作が実行されます。

  • この出力はコンソールに表示されます。


  1. Pythonプログラムで配列の合計を見つける

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列の合計を計算するために必要な配列が与えられます。 合計を取得するために各インデックスで配列と要素全体をトラバースするブルートフォースアプローチについては、以下で説明します。合計を取得するための各インデックスについては、以下で説明します。 例 # sum function def sum_(arr,n):    # using built-in function    return(sum(arr)) # main arr = [11,22,33,44,55,66

  2. 配列の合計を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '