C++のシングルトラバーサルでリンクリストの最後から2番目のノードを検索します
次に、リンクリストの最後から2番目の要素を取得する方法を説明します。 [10、52、41、32、69、58、41]のような要素が少なく、最後から2番目の要素が58であるとします。
この問題を解決するために、1つは現在のノードを指し、もう1つは現在の位置の前のノードを指す、2つのポインターを使用します。次に、現在の次のノードがnullになるまで移動し、前のノードを返します。
例
#include<iostream>
using namespace std;
class Node {
public:
int data;
Node *next;
};
void prepend(Node** start, int new_data) {
Node* new_node = new Node;
new_node->data = new_data;
new_node->next = NULL;
if ((*start) != NULL){
new_node->next = (*start);
*start = new_node;
}
(*start) = new_node;
}
int secondLastElement(Node *start) {
Node *curr = start, *prev = NULL;
while(curr->next != NULL){
prev = curr;
curr = curr->next;
}
return prev->data;
}
int main() {
Node* start = NULL;
prepend(&start, 15);
prepend(&start, 20);
prepend(&start, 10);
prepend(&start, 9);
prepend(&start, 7);
prepend(&start, 17);
cout << "Second last element is: " << secondLastElement(start);
} 出力
Second last element is: 20
-
C++のツリー内の特定のサブツリーのDFSトラバーサルでK番目のノードを検索します
この問題では、サイズNのツリー、ツリーVおよびkのノードが与えられます。私たちのタスクは、ツリー内の特定のサブツリーのDFSトラバーサルでK番目のノードを見つけることです。 。 頂点Vから始まるツリーのDFSトラバーサルでk番目のノードを見つける必要があります。 問題を理解するために例を見てみましょう 入力: V =2、k =3 出力:4 説明 − The series is {1, 2, 3, 5, 6, 7} The 4th element is 5. ソリューションアプローチ この問題の簡単な解決策は、ノードVのDFSトラバーサルを見つけて、そこからk番目の値
-
C++で順序トラバーサルのn番目のノードを検索します
この問題では、二分木と整数Nが与えられます。タスクは、二分木を順番に走査するn番目のノードを見つけることです。 二分木には、各ノードが最大2つの子を持つことができるという特別な条件があります。 トラバーサルは、ツリーのすべてのノードにアクセスするプロセスであり、それらの値も出力する場合があります。 問題を理解するために例を見てみましょう 入力 N = 6 出力 3 説明 inorder traversal of tree : 4, 2, 5, 1, 6, 3, 7 ソリューションアプローチ アイデアは、再帰呼び出しを使用して実行されるバイナリツリーの順序どおりのトラバーサルを使