C++の特定のバイナリツリーのすべてのレベルにおける非リーフノードの最大合計
この問題では、二分木が与えられます。私たちのタスクは、c++で指定されたバイナリツリーのすべてのレベルから非リーフノードの最大合計を見つけるプログラムを作成することです。
問題の説明 −ツリーのすべての非リーフノードとすべてのレベルの合計を計算してから、最大合計を出力します。
問題を理解するために例を見てみましょう
入力 −
出力 − 9
説明 −各レベルの非リーフノードの合計-
Level 1: 4 Level 2: 1+2 = 3 Level 3: 9 (4, 7 are leaf nodes) Level 4: 0
この問題を解決するには、バイナリツリーのレベル順トラバーサルを実行し、非リーフノードであるすべてのノードの合計を見つけてから、それらの最大合計を見つける必要があります
したがって、各レベルで、ノードに左または右の子があるかどうかを確認し、ない場合は合計に追加します。そして、レベルまで最大合計を格納するmaxSumを維持します。すべての非リーフノードの合計がmaxSumより大きい場合、そのレベルの合計を最大に初期化します。
例
ソリューションの実装を示すプログラム
#include <bits/stdc++.h> using namespace std; struct Node { int data; struct Node *left, *right; }; int maxLevelSum(struct Node* root){ if (root == NULL) return 0; int maxSum = root->data; queue<Node*> q; q.push(root); while (!q.empty()) { int count = q.size(); int levelSum = 0; while (count--) { Node* temp = q.front(); q.pop(); if (temp->left != NULL || temp->right != NULL) levelSum = levelSum + temp->data; if (temp->left != NULL) q.push(temp->left); if (temp->right != NULL) q.push(temp->right); } maxSum = max(levelSum, maxSum); } return maxSum; } struct Node* insertNode(int data) { struct Node* node = new Node; node->data = data; node->left = node->right = NULL; return (node); } int main() { struct Node* root = insertNode(6); root->left = insertNode(1); root->right = insertNode(2); root->left->left = insertNode(4); root->left->right = insertNode(7); root->right->right = insertNode(9); root->right->right->left = insertNode(5); cout<<"The maximum sum of all non-lead nodes at a level of the binary tree is "<<maxLevelSum(root); return 0; }
The maximum sum of all non-lead nodes at a level of the binary tree is 9
-
C++で与えられた完全な二分木のすべてのノードの合計を見つけます
完全な二分木のレベル数を表す正の整数Lがあるとします。この完全な二分木のリーフノードには、1からnまでの番号が付けられています。ここで、nはリーフノードの数です。親ノードは子の合計です。私たちの仕事は、この完璧な二分木のすべてのノードの合計を出力するプログラムを書くことです。したがって、ツリーが以下のようになっている場合- したがって、合計は30です。 よく見ると、すべてのノードの合計を見つける必要があります。リーフノードは1からnまでの値を保持しているため、式n(n + 1)/2を使用してリーフノードの合計を取得できます。これは完全な二分木であるため、各レベルの合計は同じになります
-
C++プログラミングのバイナリツリー内のすべてのノードの印刷レベル。
二分木が与えられた場合、タスクは、1からnまでのノードに格納されているすべてのキーに関連付けられたレベルを出力することです 上記のツリーでは、ノードは- 10 at level 1 3 and 211 at level 2 140, 162, 100 and 146 at level 3 キーが与えられると、プログラムはその特定のキーのレベルを出力する必要があります。 例 Input: 10 3 211 140 162 100 146 Output: level of 10 is 1 Level of 3 is 2 &