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

Pythonの最大平均サブツリー


二分木のルートがあるとします。そのツリーのサブツリーの最大平均値を見つける必要があります。したがって、ツリーが次のような場合-

Pythonの最大平均サブツリー

出力は6になります。これは、ノード5の場合は(5 + 6 + 1)/ 3 =4になり、ノード6の場合は6/1 =6になり、ノード1の場合は次のようになるためです。 1/1 =1なので、最大は6です。

これを解決するには、次の手順に従います-

  • res:=0

  • Solve()というメソッドを定義します。これはルートになります

  • ルートが設定されていない場合は、ペア[0、0]

    を返します。
  • 左:=ソルブ(ルートの左)右:=ソルブ(ルートの右)

  • c:=左[0]+右[0]+ 1

  • s:=left [1] + right[1]+ルートの値

  • ans:=maxofおよびanss/ c

  • ペアを返す[c、s]

  • mainメソッドから、ans:=0を設定し、solve(root)を呼び出して、ansを返します

例(Python)

理解を深めるために、次の実装を見てみましょう-

class TreeNode:
   def __init__(self, data, left = None, right = None):
      self.data = data
      self.left = left
      self.right = right
def insert(temp,data):
   que = []
   que.append(temp)
   while (len(que)):
      temp = que[0]
      que.pop(0)
      if (not temp.left):
         if data is not None:
            temp.left = TreeNode(data)
         else:
            temp.left = TreeNode(0)
         break
      else:
         que.append(temp.left)
      if (not temp.right):
         if data is not None:
            temp.right = TreeNode(data)
         else:
            temp.right = TreeNode(0)
         break
      else:
         que.append(temp.right)
def make_tree(elements):
   Tree = TreeNode(elements[0])
   for element in elements[1:]:
      insert(Tree, element)
   return Tree
class Solution(object):
   def helper(self, node):
      if not node:
         return 0, 0
      left_sum, left_count = self.helper(node.left)
      right_sum, right_count = self.helper(node.right)
      self.ans = max(self.ans, (left_sum + right_sum + node.data) / (left_count + right_count + 1))
      return left_sum + right_sum + node.data, left_count + right_count + 1
   def maximumAverageSubtree(self, root):
      self.ans = 0
      self.helper(root)
      return self.ans
ob = Solution()
root = make_tree([5,6,1])
print(ob.maximumAverageSubtree(root))

入力

[5,6,1]

出力

6.0

  1. Pythonプログラムは最大3つ。

    3つの数abとcが与えられた場合、私たちのタスクは、与えられた数の中から最大の要素を見つけなければならないということです。 例 Input: a = 2, b = 4, c = 3 Output: 4 アルゴリズム Step 1: input three user input number. Step2: Add three numbers to list. Step 3: Using max() function to find the greatest number max(lst). Step 4: And finally we will print maximum numbe

  2. Pythonでリストの平均を見つけますか?

    Pythonは、n個の要素を計算するためのsum関数を提供します。ここでは、この関数を使用して平均を計算します。 アルゴリズム Step 1: input “size of the list” Step 2: input “Element” Step 3: using sum function calculate summation of all numbers. Step 4: calculate average. サンプルコード # Average of a list A=list() n=int(input(Enter the size of the List ::)) print