Pythonの二分木で対角パス要素のそれぞれの合計を見つけるプログラム
二分木があるとすると、ツリーの各対角線の合計を右上から右下に向かって見つける必要があります。
したがって、入力が次のような場合
対角線が[12,15]、[8,10]、[3]であるため、出力は[27、18、3]になります。したがって、合計値は[27、18、3]
です。これを解決するには、次の手順に従います-
関数traverse()を定義します。これは、ノード、numLeft、出力を取ります
-
ノードがnullの場合、
-
戻る
-
-
numLeft> =出力のサイズの場合、
-
出力の最後にノードのデータを挿入
-
-
それ以外の場合
-
output [numLeft]:=output[numLeft]+ノードのデータ
-
-
ノードの左側がnullでない場合、
-
トラバース(ノードの左側、numLeft + 1、出力)
-
-
ノードの権利がnullでない場合、
-
トラバース(ノードの右側、numLeft、出力)
-
-
メインの方法から、次のようにします-
-
出力:=新しいリスト
-
traverse(root、0、output)
-
出力を返す
理解を深めるために、次の実装を見てみましょう-
例
class TreeNode: def __init__(self, data, left = None, right = None): self.data = data self.left = left self.right = right class Solution: def solve(self, root): output = [] def traverse(node, numLeft, output): if not node: return if numLeft >= len(output): output.append(node.data) else: output[numLeft] += node.data if node.left: traverse(node.left, numLeft+1, output) if node.right: traverse(node.right, numLeft, output) traverse(root, 0, output) return output ob = Solution() root = TreeNode(12) root.left = TreeNode(8) root.right = TreeNode(15) root.left.left = TreeNode(3) root.left.right = TreeNode(10) print(ob.solve(root))
入力
root = TreeNode(12) root.left = TreeNode(8) root.right = TreeNode(15) root.left.left = TreeNode(3) root.left.right = TreeNode(10)
出力
[27, 18, 3]
-
Pythonプログラムで配列の合計を見つける
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列の合計を計算するために必要な配列が与えられます。 合計を取得するために各インデックスで配列と要素全体をトラバースするブルートフォースアプローチについては、以下で説明します。合計を取得するための各インデックスについては、以下で説明します。 例 # sum function def sum_(arr,n): # using built-in function return(sum(arr)) # main arr = [11,22,33,44,55,66
-
配列の合計を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '