경로 문자열을 계층적 트리 구조로 변환
경로와 유사한 구조의 배열이 제시될 때 해당 계층적 트리 구조를 구성하는 것은 다음과 같습니다. 특히 포인터 조작 및 재귀의 제한으로 인해 어려운 작업입니다. 이를 해결하기 위한 효율적인 해결책은 기존 노드를 검색하면서 트리에 노드를 반복적으로 추가하는 방법을 활용하는 것입니다.
SOLUTION
제안된 솔루션은 재귀적 노드를 사용합니다. 노드 목록(루트)과 추가할 경로 구성 요소 목록(이름)을 가져오는 AddToTree라는 함수입니다. 루트 노드를 반복하여 이름의 첫 번째 구성 요소(names[0])가 이미 하위 항목으로 존재하는지 확인합니다. 그렇지 않은 경우 이름이 names[0]인 새 노드가 루트에 추가됩니다.
다음으로 함수는 names[0]과 일치하는 노드의 하위 항목에서 AddToTree를 재귀적으로 호출합니다. 이 프로세스는 이름의 모든 구성 요소가 처리되어 완전히 구성된 트리 구조가 될 때까지 계속됩니다.
코드 예
다음은 AddToTree 함수의 Go 구현입니다.
<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>
출력 예시
이 솔루션을 사용하면 제공된 입력 데이터를 원하는 트리 구조로 변환할 수 있습니다.
[{ "name": "a", "children": [{ "name": "b", "children": [{ "name": "c" }, { "name": "g" }] }, { "name": "d" }] }]
주요 차이점
제공된 코드와 비교하여 제안된 솔루션은 다음과 같은 몇 가지 주요 이점을 제공합니다.
위 내용은 포인터 조작 및 재귀에 크게 의존하지 않고 어떻게 경로 문자열 목록을 계층적 트리 구조로 효율적으로 변환할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!