Я работаю с BST, и меня попросят получить общие элементы в 2 BST и вставить их в 3-й. Мой метод должен вернуть третий BST. Я делал то же самое, работая с LL, но теперь для BST, я не знаю, с чего начать! Я придумал решение, но дело в том, что он работает с корнями дерева, и мне это кажется неправильным. Я так потерян, я не могу найти отправную точку. Совет очень ценится.Общие элементы из BST
EDIT: Я создал метод в классе BST
public BinarySearchTree common(BinarySearchTree t1,BinarySearchTree t2){
return commonValues(t1.root,t2.root);
}
private BinarySearchTree commonValues(BinaryTreeNode node1, BinaryTreeNode node2) {
// BinaryTreeNode temp1;
// BinaryTreeNode temp2;
BinarySearchTree tree = new BinarySearchTree();
if (node1 == null && node2 == null) {
System.out.println("Empty trees!");
} else {
if (node1.getInfo().equals(node2.getInfo())) {
tree.insert(node1.getInfo());
} else if (node1.getInfo().compareTo(node2.getInfo()) > 0) { // go left
node1 = node1.getLlink();
commonValues(node1, node2);
} else {
node2 = node2.getRlink();
commonValues(node1, node2);
}
}
return tree;
}
Я с NullPointerException каждый раз, когда я запускаю его, хотя
Существуют ли какие-либо ограничения, почему бы не сгладить BST в список заказа, а затем сравнить списки для общих элементов и добавить их в третий BST? – gtgaxiola
всякий раз, когда я запускаю код, он печатает адрес дерева, и иногда он печатает исключение метода вставки «Нет дубликатов» – Scarl
@gtgaxiola BST уже находятся в порядке, когда метод вызывается – Scarl