Ich lerne Datenstrukturen von wenigen Tagen. Nehmen wir an, wir haben eine Datenstruktur, die aus Knotenschichten aufgebaut ist. Alle Layer beginnen mit dem Knoten 'start' und enden mit einem Nullwert anstelle des letzten Knotens. Jeder Knoten hat einen "Wert", einen "Foll" -Zeiger auf den nächsten Knoten und einen "Abwärts" -Zeiger auf den nächsten Knoten in der gleichen Schicht. Auf jeder Ebene sind die Werte in aufsteigender Reihenfolge sortiert.Mindestanzahl der Schritte zum Erreichen des Ziels?
Beispiel:
S ---- 9 ------------------------------- -------> NULL
|
S ----- 9 --------- 27 --------- 51 ------ --------> NULL
| | |
- S ----- 9 --- 23 --- 27--29 --- 51 ---- 53 ------ -> NULL
Datenstruktur für Knoten:
` Class Node {
int value;
Node foll;
Node down;
} `
Schreiben Sie eine Funktion FindNode, die einen Startknoten Kopf und einen Suchwert Wert erhalten und wird die minimale Anzahl von Sprüngen zurück, die notwendig sind, um zu entweder den Knoten mit diesem Wert erreichen oder feststellen, dass er in der Datenstruktur nicht existiert.
Eingabe: Anzahl der Schichten, gefolgt von einer Liste neuer Knoten für jede Schicht und schließlich die Nummer, die gefunden werden soll. Alle Werte sind ganze Zahlen größer als Null.
4
7
27 51
24 80
4 32 54 69 82
54
werden in der Datenstruktur zur Folge haben oben und Wert beschrieben zu finden ist 54
Ausgabe
7
Kann jemand bitte sagen Sie mir, was in Java folgende Funktion werden sollte?
static int findNode(Node start, int value) { }
ein kurzer Hinweis: Rekursion –
Visualisierung der verbundenen Schichten als Baum kann helfen. Der erste Knoten der ersten Schicht ist der Stamm mit linken und rechten Unterbäumen. Jede Wurzel eines Unterbaums hat ihre eigenen linken und rechten Unterbäume. Typischerweise können mit einfachen Bäumen, die alle Knoten abdecken, die Baumknoten, wenn sie nicht geordnet sind, zuerst in der Breite oder zuerst in der Tiefe ausgeführt werden und benötigen im schlimmsten Fall etwa O (n) Zeit. –