Ich war heute bei einem Vorstellungsgespräch, bei dem ich gebeten wurde, einen Binärbaum zu serialisieren. Ich habe einen Array-basierten Ansatz implementiert, bei dem die Kinder des Knotens i (Nummerierung im Level-Order-Traversal) beim Index 2*i für das linke Kind und 2*i + 1 für das rechte Kind liegen. Der Interviewer schien mehr oder weniger zufrieden zu sein, aber ich frage mich, was serialisieren genau bedeutet? Bezieht es sich speziell auf die Verflachung des Baums, um ihn auf die Festplatte zu schreiben, oder würde das Serialisieren eines Baums auch die Umwandlung des Baums in eine verknüpfte Liste einschließen, zum Beispiel. Und wie würde man den Baum in eine (doppelt) verknüpfte Liste umwandeln und dann rekonstruieren? Kann man die genaue Struktur des Baums aus der verknüpften Liste wiederherstellen?
Was, wenn der Wert eines Baumknotens '#' sein kann?
0 Stimmen
Verwandt: stackoverflow.com/questions/2675756/
0 Stimmen
Meistens stellen Interviewer diese Frage, um herauszufinden, ob Sie einen rekursiven Ansatz verwenden werden. Im Grunde schreiben Sie serialize für Blattknoten und rufen dann für übergeordnete Knoten serialize(left), output current node, serialize(right) auf. Das ist eine elegante Lösung, und Sie lassen Ihre Gesprächspartner wissen, dass Sie einen guten Algorithmuskurs belegt haben.
0 Stimmen
Danke an alle für die hilfreichen Informationen.