2013-04-02 2 views
1

안녕하세요 여러분, ThreadedNode() 클래스를 작성하기로되어 있지만 im에 몇 가지 문제가 있습니다.스레드가있는 이진 트리

모든 이진 트리의 스레드 된 이진 트리는 inorder 탐색에서 노드의 선행자와 모든 null 권한의 자식 을 inorder 탐색에서 노드의 이전 노드로 설정하면 얻어집니다. 내가 내 문제가 있지만

생성자로 시작 // 루트 공공 ThreadedNode (BinaryNode 루트)

나는 그것이 binaryNode를 수신 알고 주어집니다 그리고 난 그것을해야 할 때 이진 트리 스레드 스레드 트리,하지만 어떻게 새 스레드 트리를 만들 수 있습니까?

+0

먼저 중위 순회를 계산하고 그것을 어딘가에 저장 유지 :

따라서 생성자는 아마 같을 것이다 다음에, 트리를 횡단 (traverse) 해, null의 경우는 null를 체크해, 포함리스트로부터 전치 수식 또는 후속을 선택한다 –

답변

0

스레드 이진 트리를 만드는 일반적인 방법은 가짜 머리입니다. 이렇게하면 단일 노드 트리를 더 쉽게 이해할 수 있고 생성자를보다 간단하게 만들 수 있습니다.

public class ThreadedNode { 

    private BinaryNode head; 

    public ThreadedNode(BinaryNode root) { 

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

    } 
} 

가 나중에 삭제, 삽입이 가짜 머리 고려해야 기억 등