> 백엔드 개발 > C++ > LINQ를 사용하여 계층 적 트리 구조를 평평한 목록으로 평평하게하는 방법은 무엇입니까?

LINQ를 사용하여 계층 적 트리 구조를 평평한 목록으로 평평하게하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2025-01-29 00:46:10
원래의
334명이 탐색했습니다.

linq의 평평한 디스플레이의 구조 How to Flatten a Hierarchical Tree Structure into a Flat List Using LINQ?

클래스로 표시되는 계층화 된 트리 데이터 구조가 있다고 가정합니다 도전

목표는 단일 플랫 목록으로 부모 노드 및 하위 노드를 포함한 모든 노드 만 포함되어야합니다.

솔루션 MyNode

이 플랫 텔링을 달성하기 위해 다음 LINQ 표현식이 사용될 수 있습니다.

이 표현은 나무 구조 전체에 재귀 적이며 전시회는 단일 목록으로 평평하게됩니다. 주어진 노드의 모든 하위 노드를 선택하고 를 호출하여 재귀 적으로 생성합니다. 그런 다음이 시퀀스를 현재 노드에 연결하여 합병 테이블을 생성하십시오. 필터

일단 트리가 평평 해지면 의 노드 만 선택할 수 있습니다. MyNode group == 1 추가 스타일 향상

가독성을 향상시키기 위해 메소드는 정적 클래스에서 확장 함수로 정의 될 수 있습니다.

발견 된 구현 평평한 프로세스를 일반화하려면 일반적인 확장 방법을 생성 할 수 있습니다.

이 방법을 사용하면 각 요소에서 자손 노드를 검색하도록 함수가 정의 된 경우 전시가 계층화 된 데이터 구조를 평평하게 할 수 있습니다.

이 일반 유형을 구현하려면

메소드를 호출하고 해당 함수를 제공하여 자손을 추출합니다.
<code class="language-csharp">IEnumerable<MyNode> Flatten(IEnumerable<MyNode> e) =>
    e.SelectMany(c => Flatten(c.Elements)).Concat(e);</code>
로그인 후 복사

위 내용은 LINQ를 사용하여 계층 적 트리 구조를 평평한 목록으로 평평하게하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿