Приветствую! Сейчас разбираю тему двоичное дерево и все никак не могу понять, что делает последнее if ().
Вот к примеру есть дерево:
5
4 6
2 8 3 7
5
И в качестве node мы передаем 6.
Получается сначала parentNode = 6;
heirNode = 6;
currentNode = 7;
while() {
parentNode = 6;
heirNode = 7;
currentNode = 5;
//заходим в следующую итерацию
parentNode = 7;
heirNode = 5;
currentNode = null;
// выходим из цикла
}
if (heirNode(5) != node.getRightChild() (7) ) {
и что происходит здесь???
}
// метод возвращает узел со следующим значением после передаваемого аргументом.
// для этого он сначала переходим к правому потомку, а затем
// отслеживаем цепочку левых потомков этого узла.
private Node receiveHeir(Node node) {
Node parentNode = node;
Node heirNode = node;
Node currentNode = node.getRightChild(); // Переход к правому потомку
while (currentNode != null) // Пока остаются левые потомки
{
parentNode = heirNode;// потомка задаём как текущий узел
heirNode = currentNode;
currentNode = currentNode.getLeftChild(); // переход к левому потомку
}
// Если преемник не является
if (heirNode != node.getRightChild()) // правым потомком,
{ // создать связи между узлами
parentNode.setLeftChild(heirNode.getRightChild());
heirNode.setRightChild(node.getRightChild());
}
return heirNode;// возвращаем приемника
}