Как я могу связать узел дерева в Java - PullRequest
0 голосов
/ 12 мая 2019

Они не упомянули вопрос, который я задаю. Только ключевое слово из этих вопросов соответствует моему вопросу.

Я тестирую код и получаю разные результаты. Я понятия не имею, что результаты разные. Оригинальный вопрос здесь https://www.geeksforgeeks.org/convert-a-given-binary-tree-to-doubly-linked-list-set-2/

Ответ правильный, если я напишу код, подобный этому;

// Start from the rightmost node, traverse  
// back using left pointers. While traversing,  
// change right pointer of nodes 
while (root != null && root.left != null)  
{ 
    node left = root.left; 
    left.right = root; 
    root = root.left; 
} 

Ответ неверный. Я могу распечатать только первый узел. Это означает, что я не изменил правильный указатель успешно. Я не знаю почему.

// Start from the rightmost node, traverse 
// back using left pointers. While traversing, 
// change right pointer of nodes 
        node help = null;
while (root != null && root.left != null) 
{ 
    help = root;
    root.right = help;

    //node left = root.left; 
    //left.right = root; 
    root = root.left; 
} 

правильный ответ может распечатать все данные в дереве. неправильный может указывать только на первый элемент, корень в дереве.

1 Ответ

0 голосов
/ 12 мая 2019

эта строка

root.right = help;

должна быть

root.left.right = help;
...