
실생활 에서
아래와 같이
계층적 구조를 갖습니다
.
예를 들어, 회사의 조직 구조는 아래와 같이 트리로 표현될 수 있습니다.

조직 구조 외에도 가계도, 지방, 도시 등을 트리 구조를 사용하여 표현할 수 있습니다.
아래와 같이 트리에 대한 많은 용어가 있습니다.

n=0 이면 빈 트리라고 합니다ADH 입니다.DOM 트리, 계단식 선택, 트리 구성 요소 등과 같이 프런트 엔드에서 가장 일반적인 데이터 구조 중 하나라고 할 수 있습니다.
JavaScript는 트리 데이터 구조를 제공하지 않지만 사용할 수 있습니다.
다음 코드와 같이
트리를 시뮬레이션하기 위한 객체 및 배열
:const tree = {
값: 'A',
어린이들: [
{
값: 'B',
어린이들: [
{ 값: 'E', 하위 항목: null },
{ 값: 'F', 하위 항목: null },
],
},
{
값: 'C',
어린이: [{ 값: 'G', 어린이: null }],
},
{
값: 'D',
어린이들: [
{ 값: 'H', 하위 항목: null },
{ 값: '나', 하위: null },
],
},
],
} 소위 깊이 우선 순회 알고리즘은 트리의 가지를 최대한 깊이 검색하는 것입니다. 순회 순서는 다음과 같습니다.

구현 아이디어는 다음과 같습니다.
children 에 대한 깊이 우선 탐색(재귀)을 계속합니다.구현 코드는 다음과 같습니다.
function dfs(root) {
console.log(루트.값)
root.children && root.children.forEach(dfs) // 다음과 일치 // if (root.children) {
// root.children.forEach(child => {
//dfs(자식)
// })
// }
}
dfs(tree) //이 트리는 이전에 정의된 트리입니다./* 결과 A
비
이자형
에프
기음
G
디
시간
나
*/ 보시다시피 순서가 그림과 일치하므로 우리 알고리즘에는 문제가 없습니다.
폭 우선소위 폭 우선순위(Breadth Priority)는 루트 노드에 가장 가까운 노드를 순서대로 방문하는 것입니다.

구현 아이디어는 다음과 같습니다.
children 해당 대기열에구현 코드는 다음과 같습니다:
function bfs(root) {
// 1. 새 대기열을 만들고 대기열에 노드를 추가합니다. const q = [root]
// 4 반복하는 동안 (q.length > 0) {
const node = q.shift() // 2개의 큐 헤드가 큐에서 제거됨 console.log(node.value)
// 팀장인 3명의 어린이가 팀에 추가됩니다. node.children &&
node.children.forEach(자식 => {
q.push(자식)
})
}
}
BFS(트리)
/* 결과 A
비
기음
디
이자형
에프
G
시간
나
*/ 보시다시피 순서가 그림과 일치하므로 우리 알고리즘에는 문제가 없습니다.