경로 문자열 배열에서 트리형 구조를 구성하는 방법
소개:
파일 경로를 나타내는 문자열 배열을 사용하여 디렉터리 계층 구조를 반영하는 트리와 같은 데이터 구조를 구성하는 것을 목표로 합니다. 배열의 각 문자열은 루트 디렉터리에서 특정 파일이나 디렉터리까지의 전체 경로를 나타냅니다.
하위 목록을 사용한 재귀적 접근 방식:
트리를 재귀적으로 구축하려면 다음이 필요합니다. 경로 문자열을 왼쪽에서 오른쪽으로 탐색하여 구성요소로 분할합니다. 이름과 하위 노드 조각이 있는 Node 구조체를 사용하여 트리를 표현할 수 있습니다.
<code class="go">type Node struct { Name string Children []Node }</code>
핵심 통찰력은 단일 노드의 하위 노드가 아닌 노드 목록에서 작동한다는 것입니다. 이를 통해 서로 다른 루트 노드가 있는 여러 트리를 처리할 수 있습니다.
<code class="go">func AddToTree(root []Node, names []string) []Node { if len(names) > 0 { var i int for i = 0; i < len(root); i++ { if root[i].Name == names[0] { //already in tree break } } if i == len(root) { root = append(root, Node{Name: names[0]}) } root[i].Children = AddToTree(root[i].Children, names[1:]) } return root }</code>
예 :
입력 경로 문자열의 경우:
<code class="go">s := [...]string{"a/b/c", "a/b/g", "a/d"}</code>
AddToTree 함수는 다음 트리 구조를 생성합니다.
<code class="json">{ "name": "a", "children": [ { "name": "b", "children": [ { "name": "c" }, { "name": "g" } ] }, { "name": "d", "children": [] } ] }</code>
원래 접근 방식에 비해 장점:
위 내용은 파일 시스템 계층을 나타내는 경로 문자열 배열에서 트리형 구조를 효율적으로 구성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!