Приветствую! Сейчас разбираю тему двоичное дерево и все никак не могу понять, что делает последнее 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;// возвращаем приемника
   }