C++のバイナリツリーですべての完全なノードを印刷します
この問題では、二分木が与えられます。私たちのタスクは、完全なノードであるツリーのすべてのノードを印刷することです。
二分木 は、ノードが最大2つの子ノードを持つことができるツリーです。ノードまたは頂点にノードを含めることはできません。1つの子ノードまたは2つの子ノードを使用できます。
例 −
フルノード は、左と右の両方の子が使用可能なノードです。つまり、左右の子を持つノードは完全なノードです。上記の二分木では、4と9は完全なノードです。
問題を理解するために例を見てみましょう-
出力 − 4 9
この問題を解決するためのシンプルで簡単なアプローチは、任意のトラバーサルアルゴリズムを使用してツリーをトラバースすることです。現在のノードに左右の子またはノードがあるかどうかを確認します。はいの場合はノードの値を出力し、そうでない場合はそのままにします。
例
ソリューションを説明するプログラム
#include <iostream>
using namespace std;
struct Node{
int data;
struct Node *left, *right;
};
Node *insertNode(int data){
Node *temp = new Node;
temp->data = data;
temp->left = temp->right = NULL;
return temp;
}
void printFullNode(Node *root){
if (root != NULL){
printFullNode(root->left);
if (root->left != NULL && root->right != NULL)
cout<<root->data<<"\t";
printFullNode(root->right);
}
}
int main(){
Node* root = insertNode(100);
root->left = insertNode(56);
root->right = insertNode(12);
root->left->left = insertNode(89);
root->right->left = insertNode(32);
root->right->right = insertNode(45);
cout<<"All full nodes of the tree are :\n";
printFullNode(root);
return 0;
} All full nodes of the tree are − 100 12
-
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 &