Versuchen Sie es mit Knoten als Werkzeug den tiefsten Weg zu rekonstruieren
Das Problem, das Sie könnte ist, dass Sie keine Möglichkeit haben, die tatsächlichen Knoten zu speichern, wie Sie den Baum durchlaufen. Was Sie brauchen, ist eine Möglichkeit, zu „erinnern“, die Knoten, die Sie auf dem Weg zu dem Blatt besucht haben, die Sie halten die tiefste zu sein.
Wenn Ihr BST in Knoten dargestellt wird, können Sie speichern eine Referenz zu betrachten, in jedem Kind, seine Eltern. Auf diese Weise, wenn Sie zum tiefstenen Blatt bekommen, kann man rekursiv den Weg zurück in die Wurzel (Hinweis: der Pfad in umgekehrter Reihenfolge sein wird) rekonstruieren. Wie so:
if (isDeepest(node)) { // Once you find the deepest node...
return reconstructPath(node); // ...reconstruct the path that took you there.
}
...
// reconstructPath is a method that takes a node (the deepest leaf) as
// an argument and returns an array of the nodes from that node to the root.
private Array reconstructPath(Node node) {
Array deepestPath = new Array();
while(node.parent != node) { // Go up until you reach the root, which will be itself.
deepestPath.add(node); // Add the node to end of the Array
node = node.parent; // Go up one level to the parent of the node
}
deepestPath.reverse(); // reverse the order so it goes root->leaf
return deepestPath;
}
Es gibt auch andere Möglichkeiten, Knoten verwenden, tun wollen dies, wenn Sie nicht, aber das ist eine einfache Möglichkeit, das Problem in Ihrem Kopf zu visualisieren.