Я пытаюсь решить стандартную проблему сериализации и десериализации двоичного дерева поиска. Исходный BST был сериализован с использованием обхода предварительного порядка разделителем как -1 в каждом нулевом экземпляре. Это сериализованное дерево.Сериализовать и десериализовать BST
1297-1-110-1-11413-1-117-1-19
Это мой код десериализации BST,
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;
}
Это, однако, не дает правильный вывод. При отладке я понял, что значение индекса возвращается к его более раннему значению, когда функция складывается, и это вызывает неправильный результат. Есть ли способ сохранить значение индекса в стеке вызовов. Любая помощь оценивается.
Это не отладочная служба. – Raedwald