прикрепить двоичные деревья к другому двоичному дереву - PullRequest
0 голосов
/ 03 ноября 2018

метод присоединяет внутреннюю структуру деревьев T1 и T2 в качестве соответствующих левого и правого поддеревьев листовой ссылки p и сбрасывает T1 и T2 в пустые деревья; возникает ошибка, если p не является листом.

public void attach(Node p, BinaryTree t1, BinaryTree t2) {
    if (p.left == null) { //logic error??
        p.left = t1.root;
        t1.root = null;
    }
    if (p.right == null) {
        p.right = t2.root;
        t1.root = null;
    }
    else
        System.out.print("is not leaf");
}

1 Ответ

0 голосов
/ 03 ноября 2018

Не удаляйте корни t1 и t2, когда вы назначаете t1.root для p.left и t2.root для p.right для задачи, которую она выполнила.

Это потому, что Java использует объекты t1 и t2 для ссылки на p.left и p.right

public void attach(Node p, BinaryTree t1, BinaryTree t2){
    if(p.left ==null){
        p.left=t1.root;
    }
    if(p.right==null){
        p.right=t2.root;
    }
    else
        System.out.print("is not leaf");
}
...