C ++の反復アプローチを使用して、バイナリツリーのすべてのリーフノードを左から右に印刷します。
この問題では、二分木が与えられ、二分木のすべてのリーフノードを左から右に反復アプローチで印刷する必要があります。
問題を理解するために例を見てみましょう
入力-
出力 − 1 4 7
反復アプローチを使用してこの問題を解決するために、深さ優先探索(DFS)を使用します。ツリーをトラバースするには、ルートノードから開始し、それがリーフノードであるかどうかを確認してから、ノードを出力します。それ以外の場合は、子ツリーを検索し、子サブツリーをトラバースしてすべてのリーフノードを検索します。
例
以下のコードは私たちのソリューションを実装します-
#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 printLTRLeafNodes(Node *root){ if (!root) return; if (!root->left && !root->right) { cout<<root->data<<"\t"; return; } if (root->left) printLTRLeafNodes(root->left); if (root->right) printLTRLeafNodes(root->right); } int main(){ Node *root = insertNode(21); root->left = insertNode(5); root->right = insertNode(36); root->left->left = insertNode(2); root->right->left = insertNode(13); root->right->right = insertNode(4); root->right->left->left = insertNode(76); root->right->left->right = insertNode(9); root->right->right->left = insertNode(17); root->right->right->right = insertNode(2); cout<<"Leaf Nodes of the tree from left to rigth are :\n"; printLTRLeafNodes(root); return 0; }
Leaf Nodes of the tree from left to right are − 2 76 9 17 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 &
-
C ++の1つのスタックを使用して、リーフノードを左から右にバイナリツリーで印刷します。
プログラムは、バイナリツリーのリーフノードを左から右に出力する必要がありますが、課題は1つのスタックのみを使用することです push()関数を使用してバイナリツリーのノードを挿入し、pop()操作を使用してリーフノードを表示します。 リーフノードは、左右のポインタがNULLであるエンドノードです。これは、特定のノードが親ノードではないことを意味します。 例 Input : 12 21 32 41 59 33 70 Output : 41 59 33 70 スタックはLIFO構造であるデータ構造であり、トップポインターが最後に挿入された要素を指すため、リーフノードは最後にスタックに挿