Ich verwende diesen Code https://rosettacode.org/wiki/AVL_tree#C.2B.2B als Basis für eine AVL-Struktur. Standardmäßig verwendet das Beispiel Ganzzahlen, aber ich muss Strings speichern. Also habe ich den Code so geändert, dass hauptsächlich der Root veröffentlicht wird und versucht wird, die Werte zu drucken.Versuch zu implementieren finden in Avl-Baum
22 /* AVL tree */
23 template <class T>
24 class AVLtree {
25 public:
26 AVLtree(void);
27 ~AVLtree(void);
28 bool insert(T key);
29 void deleteKey(const T key);
30 void printBalance();
31 AVLnode<T> *root;
32
33 private:
34
35 AVLnode<T>* rotateLeft (AVLnode<T> *a);
36 AVLnode<T>* rotateRight (AVLnode<T> *a);
37 AVLnode<T>* rotateLeftThenRight (AVLnode<T> *n);
38 AVLnode<T>* rotateRightThenLeft (AVLnode<T> *n);
39 void rebalance (AVLnode<T> *n);
40 int height (AVLnode<T> *n);
41 void setBalance (AVLnode<T> *n);
42 void printBalance (AVLnode<T> *n);
43 void clearNode (AVLnode<T> *n);
44 };
..................................
247 int main(void)
248 {
249 AVLtree<std::string> t;
250
251 std::cout << "Inserting integer values 1 to 10" << std::endl;
252 for (int i = 1; i <= 10; ++i)
253 t.insert(i+" ");
254
255 std::cout << "Printing balance: ";
256 t.printBalance();
257 std::cout << t.root->key + "\n";
258 std::cout << t.root->left->key + "\n";
259 std::cout << t.root->left->right->key + "\n";
260 std::cout << t.root->key;
261
262 }
aber das Problem ist, dass das Ergebnis, die
Inserting integer values 1 to 10
Printing balance: 1 0 -1 0 0 1 0 0 1 0
ing balance:
Printing balance:
g balance:
ing balance:
ist ausdruckt Und ich habe keine Ahnung, warum.
Danke Ich bekam einen Fehler mit to_string, entschied mich aber dafür, das Problem zu beheben, anstatt es zu umgehen. – dlrdlrdlr