Ich versuche ein Standard Interview Problem Serialisierung und Deserialisierung eines binären Suchbaums. Die ursprüngliche BST wurde serialisiert, indem das Delimiter-Vororderzeichen bei jeder Nullinstanz als -1 verwendet wurde. Dies ist der serialisierte Baum.Serialize und Deserialize eine BST
1297-1-110-1-11413-1-117-1-19
Dies ist mein Code, um die BST deserialisieren,
public static Node deserialize(List<Integer> list){
int index = 0;
return deserialize(list, index);
}
private static Node deserialize(List<Integer> list, int index) {
if(index == list.size()){
return null;
}
if(list.get(index) == -1){
index++;
return null;
}
Node root = new Node(list.get(index++));
root.setLeft(deserialize(list, index));
root.setRight(deserialize(list, index));
return root;
}
jedoch Dies führt nicht die korrekte Ausgabe. Beim Debuggen wurde mir klar, dass der Wert des Index auf seinen früheren Wert zurückfällt, wenn die Funktion ausklappt und das falsche Ergebnis verursacht. Gibt es eine Möglichkeit, den Indexwert über den Call-Stack zu halten. Jede Hilfe wird geschätzt.
Dies ist kein Debugging-Service. – Raedwald