2013-04-02 3 views
1

Привет, ребята, я должен написать класс ThreadedNode(), но у меня есть несколько проблем с ним.threaded binary tree

Я понимаю, что потоковое двоичное дерево двоичного дерева получается путем установки каждого нулевого левого дочернего элемента предшественника узла в обход порядка и каждого нулевого правого дочернего преемнику узла в обходе порядка.

однако у меня есть моя проблема начинается с конструктора // заправьте бинарное дерево, когда вы получаете корневую общественного ThreadedNode (BinaryNode корень)

я знаю, он получает binaryNode и я должен сделать это резьбовое дерево, но как создать новое дерево с резьбой?

+0

Сначала вычислит обход заказовМой и держать его где-то хранить затем пересечь дерево и проверить значение null, если null, выбрать предшественников или преемника из сохраненного списка –

ответ

0

Общим способом создания резьбовых бинарных деревьев является поддельная головка. Это упрощает понимание дерева узлов, а конструктор более прост.

Таким образом, ваш конструктор вероятно, будет выглядеть так:

public class ThreadedNode { 

    private BinaryNode head; 

    public ThreadedNode(BinaryNode root) { 

     head = new BinaryNode(); 
     root.makeThreaded(); 
     root.setRight(head); 
     head.setRight(root); 

    } 
} 

Помните, что позже вы должны учитывать эту фальшивую голову в вставках, удаление и т.д.