Ich habe eine harte Zeit zu visualisieren, wie wird mein Programm die Elemente einfügen. Hier ist der Code, der Lehrer uns gegeben hat:Reihenfolge der Elemente in perfekt ausgeglichenem Baum
int arr[] = { 3, -2, 11, 7, 12, 1, 4, 5, 33, 13 };
int n = 10;
int cnt = 0;
typedef struct node*po;
struct node {
int data;
po left;
po right;
};
po ibd(int n) {
po holder;
if (n>0) {
int nl = n/2;
int nr = n - nl - 1;
holder = new node;
holder->data = arr[cnt++];
holder->left = ibd(nl);
holder->right = ibd(nr);
return holder;
}
else {
return NULL;
}
}
Ich kann leider nicht verstehen und visualisieren, wie es die Elemente in dem Baum legt. Von dem, was ich verstehen kann, verwendet es rekursiv Divide-and-Conquer-Algorithmus, um das Array in zwei Teile aufzuteilen und die Elemente hinzuzufügen, aber ich kann nicht verstehen, welches Element zum Stamm wird. Kann mir jemand helfen zu visualisieren, wie der Baum aussehen würde, nachdem alles eingefügt wurde?
Sie sollten mit Ihrem Debugger durch den Code gehen und sehen, was es tut. – NathanOliver
Sie sollten das C-Tag für diese Frage lieber als das C++ - Tag verwenden. –
Wenn die Funktionssignatur des Lehrers "po ibd (int n)" ist, fürchten Sie die Zukunft der Code-Klarheit – Drax