문제

Java Class Treemap은 RB 트리 구현을 사용한다고 들었습니다. 이 경우, 트리 맵에서 어떻게 내부, 선주문 및 사전 주문 및 주문 지점을 수행합니까?

아니면 이것이 불가능합니까?

도움이 되었습니까?

해결책

컬렉션 라이브러리에서 구현 된 Treemap에서는이 작업을 수행 할 수 없습니다. 다음은 a의 구현입니다 빨간색 나무 당신은 볼 수있는 자바에서. 확인하십시오 printTree() 그들이 정렬 된 순서로 나무를 걷는 방법을 확인하는 방법.

/**
 * Print all items.
 */
public void printTree( ) {
    printTree( header.right );
}

/**
 * Internal method to print a subtree in sorted order.
 * @param t the node that roots the tree.
 */
private void printTree( RedBlackNode t ) {
    if( t != nullNode ) {
        printTree( t.left );
        System.out.println( t.element );
        printTree( t.right );
    }
}

그로부터 당신은 자신만의 방법을 작성하여 세 가지 순서로 나무를 가로 질러 트리를 통과 할 수 있습니다.

다른 팁

Afaik The TreeSet/TreeMap 클래스는 실제로 내부를 노출시키지 않으며 단지 세트/맵 인터페이스를 준수합니다. 반복자는 오름차순 순서로 만 보장됩니다.

이 나무의 목표는 물체 (예 : 수학 공식) 사이의 관계를 나타내는 것이 아니라 오히려 모든 것을 저장하고 효율적으로 검색하는 것이기 때문에 왜이 노드를 내면에 스캔하고 싶은지에 대해 약간 당황합니다.

최소한 반복자와 각 루프마다 내부 산책을 수행 할 수 있습니다.

void inOrderWalk(TreeMap<K,V> treeMap) {
   //this will loop through the values in the map in sorted order (inorder traversal)
   for (Map.Entry<K,V> entry : treeMap.entrySet() {
        V value = entry.getValue();
        K key = entry.getKey()
   }
}

그러나 다른 포스터는 옳습니다. Java는 트리 메커니즘을 노출시키지 않으므로이보기에서는 선주문 또는 우편 주문형이 불가능합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top