Я пытаюсь создать полное двоичное дерево с использованием связанного списка, а не массива, без сравнения значений узлов.
Я имею в виду, что при вставке нового значения я не хочу сравнивать, является ли значение меньше, больше или равно значению корня, чтобы добавить его либо к левой ссылке, либо к правой ссылке, но все же иметь возможность создать полное двоичное дерево.
Как вы думаете, это возможно? Если да, у вас есть идея или вы можете указать мне на то, что я могу использовать / прочитать, чтобы сделать это?
EDIT:
Here's an example to make my question more clear:
I am adding the numbers in the order presented through the insert method: 1 2 3 4 5 6
the insert method takes care of the structure of the tree.
1 becomes the root since it's the first value added.
2 is the left child of 1
3 the right child of 1
4 the left child of 2
5 the right child of 2
6 the left child of 3
РЕШЕНИЕ:
public void insert(Comparable item) {
total++;
if (root == null) {
root = new TreeNode(item);
} else {
int quotient=total;
Stack path = new Stack();
TreeNode p = root; // helper node to follow path
quotient /= 2; // skip last step
while (quotient>1) { // build path to follow
path.push(quotient%2);
quotient /= 2;
}
while (!path.isEmpty()) {
Object q = path.pop();
if (q.equals(0))
p = p.getLeft();
else
p = p.getRight();
}
if (total%2==0) // check last step
p.setLeft(new TreeNode(item));
else
p.setRight(new TreeNode(item));
}
}