본문 바로가기
자료구조 스터디

자료구조 여름방학 1주차

by 기록을안하면바보 2024. 7. 7.

 

트리

 

그래프의 특수한 형태로 노드와 엣지로 연결된다. 

순환 구조가 없고 1개의 루트노드가 존재한다. 

 

트리에서 임의의 두 노드를 이어주는 경로는 유일하다.

 

노드: 데이터의 인덱스와 값을 표현

엣지:노드사이의 연결

루트: 최상위 노드

리프노드:최하위에 존재하는 노드

자식노드: 두 노드 사이에서 하위노드에 해당하는 노드

 

tree 문제:

1) 그래프 풀이

   dfs, bfs 문제

2) tree만을 위한 문제

   이진트리, 세그먼트 트리,lca (최소 공통 조상)

      1차원 배열로 트리를 표현

      (자식으로 이동할 때는 index*2 or index*2+1 부모로 이동할 때는 index/2...)

 

[백준 11725]

 

인접리스트 자료구조 사용

일반적으로 dfs, bfs사용

dfs를 사용해 쉽게 해결 가능

 

깊이우선 탐색: 현재노드가 다음번 탐색한 노드의 부모 노드임.

 

깊이우선탐색을 해주면서 다음 미방문 노드로 갈때 부모노드는 현재노드임.

import sys

sys.setrecursionlimit(파이썬 코딩테스트 볼 때 사용해주기 )

 

  • 방문 노드 저장 리스트
  • 트리 인접 리스트 
  • 정답 리스트

정의해주기

 

 dfs 함수를 일반적으로 작성하면서 정답리스트에 answer[i] (현재노드)=number(부모노드) 저장

 마지막에선 정답 배열을 활용해 부모노드를 출력해주면 정답 출력 가능

 

 

이진트리

이진트리: 자식노드의 차수가 2 이하로 구성된 트리

편향 이진트리: 한쪽으로 쳔향된 이진트리

포화이진트리: 단말노드가 모두 채워진 트리

완전이진트리: 마지막 레벨을 제외한 모든 레벨은 노드가 모두 채워져있고 마지막 레벨은 왼쪽부터 단말노드가 채워지는 트리

 

이진트리의 편리한 순차표현: 배열

 

부모노드 인덱스 i

자식노드 인덱스 i * 2, i * 2 + 1

인덱스의 계산으로 부모 자식 관계를 판별 가능하기 때문에 배열의 행태로 편리하게 관찰 가능

 

#계산을 위해 0번 인덱스는 비워둔다

 

'자료구조 스터디' 카테고리의 다른 글

자료구조 여름방학 3주차  (0) 2024.07.18
자료구조 여름방학 2주차  (0) 2024.07.14
자료구조 스터디 6주차  (0) 2024.05.25
자료구조 스터디 5주차  (0) 2024.05.18
자료구조 스터디 4주차  (1) 2024.05.15