2008-09-01 7 views

답변

6

마태 복음 이미 말에 추가, 그것은 본다 사전 구축 된 구현. Perl은 이미 배열 참조 배열을 사용하여 이들을 지원합니다. 예를 들어

,

   t 
     / \ 
      a  d 
     /\ /\ 
     b c e f 

다음 펄 코드로 표현 될 수있는이 나무의 간단한 표현 : 제 소자 (: 여기

$tree = [ t => [ a => [ b => [], c => [] ] 
       d => [ e => [], f => [] ] ] ]; 

는 트리의 표현은 중첩 쌍이고 이 경우 문자), 그 요소의 자식을 나타내는 익명의 배열 참조를 반환합니다. =>은 쉼표 왼쪽에있는 토큰 주위에 따옴표를 넣지 않아도되는 단일 단어 인 경우 Perl의 멋진 쉼표입니다. 위의 코드는 이렇게 기록 된 수 :

sub elements { 
    my $tree = shift; 

    my @elements; 
    my @queue = @$tree; 
    while (@queue) { 
     my $element = shift @queue; 
     my $children = shift @queue; 
     push @elements, $element; 
     unshift @queue, @$children; 
    } 

    return @elements; 
} 

@elements = elements($tree)  # qw(t a b c d e f) 

(첫번째 폭의 경우, push @queue, @$children에 선 unshift @queue, @$children을 변경 : 여기

$tree = [ 't', [ 'a' , [ 'b' , [], 'c' , [] ] 
       'd' , [ 'e' , [], 'f' , [] ] ] ]; 

트리의 모든 요소의 단순 깊이 우선 축적이다)

따라서 트리에서 수행 할 작업에 따라 가장 간단한 것은 Perl의 기본 배열 및 배열 참조 지원을 사용하는 것일 수 있습니다.

4

필자가 perl 라이브러리가 아닌 "소스"가 필요한 이유를 이해하지 못했지만 CPAN 모듈의 소스를 다운로드 할 수 있습니다.

아직 사용하지 않았지만 Tree은 사용자의 요구 사항을 충족하는 것으로 보입니다. 당신이 트리 구조를 필요에 따라

Tree::Nary
Tree::Simple
Tree

3

, 당신이 필요하지 않을 수도 있습니다 : 다음과 같은 모듈이 적합 할 것 같은