2014-12-11 8 views
0

제목에 설명되어 있습니다. 내가 만든 일반 트리에서 이진 검색 트리를 만들려고합니다. 내 일반 노드 클래스의 코드는 다음과 같습니다일반 트리에서 이진 검색 트리를 만드는 방법

Node<E> parent; 
E data; 
ArrayList<Node<E>> children = new ArrayList<Node<E>>(); 

public Node(E data){ 
    this.data = data; 
} 

public ArrayList<Node<E>> getChildren(){ 
    return this.children; 
} 

public void addChild(Node child){ 
    int counter = 0; 
    for (int i = 0; i < children.size(); i++){ 
     if (child.toString().equals(children.get(i).toString())){ 
      System.out.println("already exists"); 
      counter++; 
     } 
    } 
    if (counter > 0){} 
    else{ 
     children.add(child); 
    } 

} 

public void removeChild(Node<E> child){ 
    children.remove(child); 
} 

public Node<E> getChild(Node<E> child){ 
    for (int i = 0; i < children.size(); i++){ 
     if (children.get(i) == child){ 
      return child; 
     } 
    } 
    return null; 
} 

public void setParent(Node parent){ 
    this.parent = parent; 
} 

public Node<E> getParent(){ 
    return this.parent; 
} 

public boolean isDirectory(Node node){ 
    if (data == node.data){ 
     return false; 
    } 
    return true; 
} 

public boolean hasChildren(){ 
    return getChildren() != null; 
} 

public E getData(){ 
    return this.data; 
} 

public String toString(){ 
    return data.toString(); 
} 
}//end class 

그리고 내 나무 클래스 그렇게 모든 너희들에게 눈의 피로를 저장, 가장자리에 방법이 가득, 내 나무 클래스는 루트 및 설정하는 생성자로 구성 루트는 트리의 루트입니다. 일반 트리를 이진 검색 트리로 변환하려면 이진 검색 트리의 루트에 일반 트리 루트를 설정해야합니다. 내 질문은 그 때 어디에서부터 나가야합니까? 이진 검색 트리에 노드를 추가하기 위해 일반 트리를 어떻게 트래버스합니까? 어떤 도움을 주시면 감사하겠습니다. 이 자식 노드의 임의의 번호를 가지고 그 노드가 특정 순서가 없기 때문에 검색하지 수 있기 때문에

+0

비 2 진 트리 노드를 2 진 노드로 나눕니다. 연속적으로 정렬 된 두 개의 자식 노드는 모두 하나의 자식 노드가있는 이진 노드 자식으로 바꿀 수 있습니다. 노드) - BST는 정의에 따라 균형을 유지할 필요가 없지만 작업별로 다른 제한이 적용될 수 있습니다. 트리의 끝에 균형을 조정해야하는 경우 다양한 방법으로 회전을 수행하려면 http://en.wikipedia.org/wiki/Self-balancing_binary_search_tree를 참조하십시오. – user2864740

+0

이진 검색 트리에는 트리 순서를 빌드하는 데 필요한 검색 키가 저장되어 있습니다 (예 : 데이터). 여기 열쇠가 뭐니? –

답변

0

일반적인 나무는하지 입니다. 결과적으로 일반 트리에서 이진 탐색 트리를 구성하는 것은 일반 트리의 모든 노드를 이진 검색 트리에 삽입하는 것과 같습니다. 나는 이것을 으로 바꾸지 않을 것이다.은을 일반 트리의 노드에서 더 많이 생성하는 것이다. 이다.

+0

어떻게하면 모든 노드를 이진 트리에 삽입 할 수 있습니까? @ 이바일로 스트 란 트 예프 – user3554599

관련 문제