バイナリツリーのすべての内部ノードをC++で出力します
この問題では、二分木が与えられ、二分木のすべての内部ノードを印刷する必要があります。
二分木 は、ノードが最大2つの子ノードを持つことができるツリーです。ノードまたは頂点にノードを含めることはできません。1つの子ノードまたは2つの子ノードを使用できます。
例 −
内部ノード は、少なくとも1つの子を持つことができるノードです。つまり、非リーフノードは内部ノードです。
問題を理解するために例を見てみましょう-
出力 − 7 4 9
この問題を解決するために、BFS(幅優先探索)トラバーサルを使用してバイナリツリーをトラバースします。
トラバーサル中に、ノードをキューにプッシュします。キューから要素をポップすると、子ノードを持たないツリーのすべてのノードが出力されます。
#include <bits/stdc++.h> using namespace std; struct Node { int data; Node *left, *right; Node(int data){ left = right = NULL; this->data = data; } }; void printNonLeafNodes(Node* root) { queue<Node*> treeNodes; treeNodes.push(root); while (!treeNodes.empty()) { Node* curr = treeNodes.front(); treeNodes.pop(); bool isInternal = 0; if (curr->left) { isInternal = 1; treeNodes.push(curr->left); } if (curr->right) { isInternal = 1; treeNodes.push(curr->right); } if (isInternal) cout<<curr->data<<"\t"; } } int main() { Node* root = new Node(43); root->left = new Node(12); root->right = new Node(78); root->left->left = new Node(4); root->right->left = new Node(9); root->right->right = new Node(1); root->right->right->right = new Node(50); root->right->right->left = new Node(25); cout<<"All internal Nodes of the binary tree are :\n"; printNonLeafNodes(root); return 0; }
All internal Nodes of the binary tree are − 43 12 78 1
-
C ++プログラミングでリーフノードになるので、バイナリツリーのノードを出力します。
二分木が与えられた場合、その葉のノードを印刷してから、それらの葉のノードを削除してから、ツリーにノードがなくなるまで繰り返す必要があります。 例 したがって、問題の出力は-になります。 6 7 9 13 143 421 アプローチ DFSを適用するアプローチを採用しています。 一時的な値を適用するには、すべての値にゼロを割り当ててから、すべてのノードに値 maximum(両方の子の値)+1を割り当てます。 。 アルゴリズム right =NULL、return(node)FUNCTION void postod(struct Node * node、v
-
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 &