문제

내가 쓰는 Perl 스크립트를 사용하고 싶 n ary 나무 데이터는 구조입니다.

이 구현으로 사용할 수 있는 소스 코드(아닌 부분의 펄 라이브러리)?

도움이 되었습니까?

해결책

를 추가하이 무엇을 마태복음이 이미 말했다,그것은 다음과 같은 모듈이 될 것이 적합하다:

트리::어림
트리:간단한

다른 팁

난 이해하지 못하고 왜 그것을 원하는"원본"보다는 오히려로 perl 라이브러리,하지만 당신은 다운로드할 수 있는 소스에 대한 모든 CPAN 모듈이 있습니다.

나는 그것을 사용하지 않은하지만, 보을 채우기 위해 요구 사항입니다.

당신이 필요에 따라 나무 구조를 위해,필요하지 않을 수도 있습은 어떤 사전 구축된 구현합니다.Perl 이미 지원을 사용하여 그들의 배열 arrayrefs.

예를 들어,간단한 표현이 나무의

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

될 수 있으로 표시되는 펄 코드:

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

여기에는 나무의 표현이 중첩된 쌍:첫째 요소(이 경우에는,편지)다음 익명으로 배열을 참조 대표하는 어린이들의 요소입니다.Note => 은 멋진 쉼표 펄에서는 면제할 필요 따옴표를 넣어 주변 토큰을 왼쪽의 쉼표,제공 그것은 하나의 단어입니다.위의 코드도 작성 되었습니다 따라서:

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

여기에 간단한 깊이 첫 번째 어큐뮬레이터의 모든 요소에서 트리:

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)

(에 대한 폭넓은 첫번째 줄 변경 unshift @queue, @$children 하기 push @queue, @$children)

그래서에 따라 작업을 수행할 나무에 가장 간단한 일이 될 수 있을 사용하여 Perl 의 내장에서 지원에 대한 어레이 배열을 참조가 있습니다.

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