Ich muss den In-Order-Nachfolger in einem binären Suchbaum finden. Um zum Beispiel einen Baum mit Format gegeben:Suche in Reihenfolge Nachfolger in binäre Suchbaum Verwenden von Rekursion
4
/\
2 7
und einen Suchwert von 2 vorbei, würde das in Ordnung Nachfolger 4.
Relevante Code:
template <typename T, typename Compare=std::less<T>>class BinarySearchTree {
private:
struct Node {
// Default constructor - does nothing
Node() {}
// Custom constructor provided for convenience
Node(const T &datum_in, Node *left_in, Node *right_in)
: datum(datum_in), left(left_in), right(right_in) { }
T datum;
Node *left;
Node *right;
};
Und meine hier Funktion Suche nach dem In-Order-Nachfolger
Nun glaube ich das Problem ist, dass meine Funktion nicht reco ist gnizing, wenn es tatsächlich am gewünschten Knoten ist. Ich denke, dass ich dies in einem zusätzlichen Basisfall oder vielleicht noch einer anderen if-Anweisung am Ende der Funktion überprüfen muss. Ich kann mir jedoch nicht vorstellen, wie ich das machen könnte, ohne einen rekursiven Aufruf des aktuellen Knotens zu machen, aber das würde einfach in der Endlosschleife enden.
Mögliches Duplikat von [Reihenfolge der Nachfolger im binären Suchbaum] (https://stackoverflow.com/questions/5471731/in-order-successor-in-binary-search-tree) – Dukeling