C++のすべてのノードにInorderSuccessorを入力します
この問題では、ツリーが与えられます。構造体には、次にポインタが含まれています。私たちのタスクは、このポインタに順序付けられた後継者を入力することです。 ノードの。
struct node { int value; struct node* left; struct node* right; struct node* next; }
次のすべてのポインターはNULLに設定されており、ノードの順序どおりの後続ポインターにポインターを設定する必要があります。
順序のないトラバーサル −これは次の形式でトラバースします
Left node -> root Node -> right node.
後継者の注文 −インオーダーサクセサは、現在のノードがツリーのインオーダートラバーサルの後に来るノードです。
問題を理解するために例を見てみましょう
順序どおりの走査は783 5 9 1
各ノードへの入力-
Next of 5 is 9 Next of 8 is 3 Next of 7 is 8 Next of 3 is 5 Next of 9 is 1
この問題を解決するために、ツリーをトラバースしますが、順序形式は逆になります。次に、最後の訪問要素を番号の次の要素に配置します。
例
ソリューションの実装を示すプログラム
#include<iostream> using namespace std; struct node { int data; node *left; node *right; node *next; }; node* insertNode(int data){ node* Node = new node(); Node->data = data; Node->left = NULL; Node->right = NULL; Node->next = NULL; return(Node); } void populateTree(node* pop){ static node *next = NULL; if (pop){ populateTree(pop->right); pop->next = next; next = pop; populateTree(pop->left); } } void printNext(node * root) { node *ptr = root->left->left; while(ptr){ cout<<"Next of "<<ptr->data<<" is "; cout<<(ptr->next? ptr->next->data: -1)<<endl; ptr = ptr->next; } } int main() { node *root = insertNode(15); root->left = insertNode(99); root->right = insertNode(1); root->left->left = insertNode(76); root->left->right = insertNode(31); cout<<"Populating the Tree by adding inorder successor to the next\n"; populateTree(root); printNext(root); return 0; }
出力
次の後続を順番に追加してツリーにデータを入力する
Next of 76 is 99 Next of 99 is 31 Next of 31 is 15 Next of 15 is 1 Next of 1 is -1
-
C++で特定のノードから距離kにあるすべてのノードを出力します
この問題では、二分木、ターゲットノード、整数Kが与えられます。ターゲットノードから距離Kにあるツリーのすべてのノードを印刷する必要があります。 。 二分木 は、各ノードに最大2つのノード(1つまたは2つ/なし)を持つ特別なツリーです。 問題を理解するために例を見てみましょう K =2 ターゲットノード:9 出力 − 5 1 3. 説明 − 距離は、ノードの上位、下位、または同じレベルで取得できます。したがって、それに応じてノードを返します。 この問題を解決するには、ターゲットノードからK距離離れたノードのタイプを理解する必要があります。 上記の試験から、k個の離
-
C++でリーフノードから距離kにあるすべてのノードを出力します
この問題では、二分木と数Kが与えられます。葉のノードからkの距離にある木のすべてのノードを印刷する必要があります。 二分木 は、各ノードに最大2つのノード(1/2 /なし)がある特別なツリーです。 リーフノード 二分木のは、ツリーの最後にあるノードです。 この問題では、リーフノードからの距離はリーフノードよりも高いレベルのノードです。レベル4のリーフノードから距離2のノードがレベル2になるとします。 問題を理解するために例を見てみましょう K =2 出力 − 6 9. この問題を解決するために、ツリーをトラバースします。すべては、リーフノードに到達するレベルごとにすべて