Pythonで同じレベルの葉のデータの合計の乗算を見つける
-
レベルごとに、このレベルに葉がある場合は、すべての葉の合計を求めます。それ以外の場合は無視してください。
-
すべての合計の乗算を見つけて返します。
したがって、入力が次のような場合
その場合、出力は270になります。最初の2つのレベルにはリーフがありません。 3番目のレベルには単一の葉9があります。最後のレベルには4つの葉2、12、5、および11があります。したがって、結果は9 *(2 + 12 + 5 + 11)=270
これを解決するには、次の手順に従います-
-
ルートがnullの場合、
-
0を返す
-
-
res:=1
-
que:=キュー
-
queの最後にルートを挿入します
-
無限に行う-
-
no_of_nodes:=queのサイズ
-
no_of_nodesが0と同じ場合、
-
ループから出てきます
-
-
sum_level:=0
-
found_leaf:=False
-
no_of_nodes> 0の場合、実行
-
curr_node:=queの最初の要素
-
curr_nodeがleafの場合、
-
found_leaf:=True
-
sum_level:=sum_level + curr_node.data
-
-
queから最初の要素を削除する
-
curr_node.leftがnullでない場合、
-
queの最後にcurr_node.leftを挿入します
-
-
curr_node.rightがnullでない場合、
-
queの最後にcurr_node.rightを挿入します
-
-
no_of_nodes:=no_of_nodes-1
-
-
found_leafがtrueの場合、
-
res:=res * sum_level
-
-
-
解像度を返す
例
理解を深めるために、次の実装を見てみましょう-
class TreeNode: def __init__(self, data): self.data = data self.left = self.right = None def isLeaf(root) : return (not root.left and not root.right) def find_res(root) : if (not root) : return 0 res = 1 que = [] que.append(root) while (True): no_of_nodes = len(que) if (no_of_nodes == 0) : break sum_level = 0 found_leaf = False while (no_of_nodes > 0) : curr_node = que[0] if (isLeaf(curr_node)) : found_leaf = True sum_level += curr_node.data que.pop(0) if (curr_node.left != None) : que.append(curr_node.left) if (curr_node.right != None) : que.append(curr_node.right) no_of_nodes -=1 if (found_leaf) : res *= sum_level return res root = TreeNode(8) root.left = TreeNode(8) root.right = TreeNode(6) root.left.right = TreeNode(7) root.left.left = TreeNode(9) root.left.right.left = TreeNode(2) root.left.right.right = TreeNode(12) root.right.right = TreeNode(10) root.right.right.left = TreeNode(5) root.right.right.right = TreeNode(11) print(find_res(root))
入力
root = TreeNode(8) root.left = TreeNode(8) root.right = TreeNode(6) root.left.right = TreeNode(7) root.left.left = TreeNode(9) root.left.right.left = TreeNode(2) root.left.right.right = TreeNode(12) root.right.right = TreeNode(10) root.right.right.left = TreeNode(5) root.right.right.right = TreeNode(11)
出力
270
-
Pythonで同じレベルの葉のデータの合計の乗算を見つける
二分木があるとします。次の操作を実行する必要があります- レベルごとに、このレベルに葉がある場合は、すべての葉の合計を求めます。それ以外の場合は無視してください。 すべての合計の乗算を見つけて返します。 したがって、入力が次のような場合 その場合、出力は270になります。最初の2つのレベルにはリーフがありません。 3番目のレベルには単一の葉9があります。最後のレベルには4つの葉2、12、5、および11があります。したがって、結果は9 *(2 + 12 + 5 + 11)=270 これを解決するには、次の手順に従います- ルートがnullの場合、 0を返
-
nで割った配列乗算のリマインダーを見つけるためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 複数の数値と数値入力nが与えられた場合、除算可能なすべての数値にnを掛けた後、余りを出力する必要があります。 アプローチ まず、arr [i]%nのように余りを計算します。次に、この余りに現在の結果を掛けます。 乗算後、オーバーフローを避けるために同じ余りを取ります。これは、モジュラー演算の分配法則に準拠しています。 ( a * b) % c = ( ( a % c ) * ( b % c ) ) % c 例 def findremainder(arr, lens, n): &n