leetcode 트리 두 갈래 검색 트리 균형 두 갈래 트리 제목 총결산

4178 단어 학습 노트
어려운 문제와 간단한 문제만 표시하고, 중간 문제는 표시하지 않는다.

나무가 두루 다니다


중, 후, 앞 순서 반복 문제, n갈래 나무, 두 갈래 나무의 반복 차원 반복(간단)(주로 비귀속 해법 복습)
  • 94 중서 두루 다니기≠
  • 144 전차 두루 훑어보기≠
  • 145후 차례차례 只
  • 589n 포크 나무 앞 순서를 두루 훑어본다 ≠
  • 590n 포크나무 뒷차례를 두루 훑어본다≠
  • 429n 포크 트리 계층 서열 반복 ≠
  • 102 두 갈래 나무의 차원을 두루 훑어본다 ≠
  • [236. 이차나무의 최근 공공조상
  • [257. 두 갈래 나무의 모든 경로≠(귀속, 잔고는 모두 가능)
  • 두 갈래 검색 트리

  • [98. 두 갈래 검색 트리 검증
  • [230. 두 번째 검색 트리에서 K째 작은 요소
  • [LeetCode] 272. Closest Binary Search Tree Value II 최근 검색 트리 2분의 2
  • [LeetCode] 285. Inorder Successor in BST 두 갈래 검색 트리의 중차순 후계 노드
  • [LeetCode] 285. Inorder Successor in BST 두 갈래 검색 트리의 중차순 후계 노드
  • [783. 두 갈래 검색 트리 결점 최소 거리
  • [173 두 갈래 검색 트리 교체기≠
  • [LeetCode] 251. Flatten 2D Vector 평면 2차원 벡터
  • [LeetCode] 281. Zigzag Iterator 지그재그 교체기
  • [LeetCode] 285. Inorder Successor in BST 두 갈래 검색 트리의 중차순 후계 노드
  • [501. 두 갈래 검색 트리의 중수(Morris)≠
  • [98 두 갈래 검색 트리 검증(중서 반복이 크기 규칙에 부합되는지) ≠
  • [99. 두 갈래 검색 트리 복원(Morris)≠(어려움)
  • [671. 두 갈래 나무 중 두 번째로 작은 노드(간단)
  • [1305. 두 갈래 검색 트리의 모든 요소
  • 면접문제 34.두 갈래 트리 중 하나가 되는 경로
  • [leetcode] 325. Maximum Size Subarray Sum Equals k

  • 배운 새로운 지식


    모리스의 차례차례


    모리스의 순서는 먼저 명확하다. 두 갈래 검색 트리에서 만약에 하나의 결점에 선구 결점이 있다면 선구 결점의 오른쪽 바늘은 두 가지 경우만 비어 있다. 이 결점 자체(즉 선구는 그의 부결점)이기 때문에 우리는 선구 결점의 오른쪽 바늘이라는 특성을 이용하여 공간의 복잡도를 낮출 수 있다
    Morris 스트리밍 알고리즘의 단계는 다음과 같습니다.
    현재 결점을 검사하는 왼쪽 아이:
    현재 결점의 왼쪽 아이가 비어 있으면 선구가 없거나 선구가 아버지의 결점이기 때문에 검사를 하고 오른쪽 아이로 들어간다.만약에 현재 결점의 왼쪽 아이가 비어 있지 않으면 왼쪽 나무에 틀림없이 그 전구가 있다는 것을 의미한다. 그러면 이 전구를 찾아라. 만약에 전구 결점의 오른쪽 아이가 비어 있다면 아직 왼쪽 나무를 검사하지 않았다는 것을 설명한다. 그러면 전구 결점의 오른쪽 아이를 현재 결점을 가리키고 현재 결점의 왼쪽 아이로 들어간다.만약에 현재 결점의 전구 결점이 오른쪽 아이가 그 자체를 가리키고 왼쪽 나무가 검사되었다는 것을 설명한다면 직접 검사를 한 다음에 전구 결점의 오른쪽 아이를 비워 원래의 나무를 회복하고 오른쪽 아이로 들어간다.
    반복 과정에서 각 노드는 최대 두 번, 한 번은 부모 노드에서 현재 노드로, 두 번째는 접두사 노드의 오른쪽 아이 바늘에서 현재 노드로 되돌아오기 때문에 모리스 반복 알고리즘의 복잡도는 O(n)이다.반복 과정에서 새로운 메모리를 신청하지 않았기 때문에 알고리즘의 공간 복잡도는 O(1)이다.

    평형 두 갈래 나무


    DFS 깊이 우선 순위 검색

  • [46. 전체 배열(DFS)≠
  • [47. 전체 배열 II(모든 전체 배열 DFS+가지치기를 구할 필요 없음)≠
  • [113. 경로 총 II(DFS + 상태 재설정)⑧
  • [112.경로 총계(DFS)≠
  • [437. 경로 총계 III(두 번 귀속 또는 접두사와)≠
  • 경로 및 IV

  • [491. 점증자 서열(깊이 우선 검색 + 가지치기 무게 unordered_map) ≠
  • [31. 다음 배열
  • [60. k번째 배열
  • [77. 조합
  • [529. 지뢰제거 게임(DFS BFS 모두 가능)
  • [756. 피라미드 변환 매트릭스
  • [LeetCode] 267. Palindrome Permutation II 회문 전체 배열 2
  • [996. 정사각형 수조의 수(곤란)
  • C++에서 find() 함수 사용

    //find()  , 
    find(track.begin(), track.end(), nums[i]) == track.end()
    

    C++ std::unordered_맵 사용법


    용기에서 키 값이 k인 요소를 검색하고 찾으면 이 요소를 가리키는 교체기를 되돌려줍니다. 그렇지 않으면 unordered_map::end의 교체기.

    동적 계획

  • [300. 최장 상승 서열≠(동적 기획 N^2≠ 최적화: NlogN)
  • [64.최장수 체인
  • 점차적으로 증가하는 삼원자 서열
  • 러시아 베이비 봉투 문제(곤란)
  • 최장수 체인
  • 최장 증가자 서열의 개수
  • 두 문자열의 최소 ASCII 삭제 및
  • 탐욕 알고리즘

  • [64.최장수 체인
  • [435. 중복구간 없음(medium)
  • [991. 고장난 계산기
  • [300. 최장 상승 서열
  • 윈도우

  • [1297. 자열의 최대 출현 횟수
  • 기타:

  • [284. 맨 윗부분 교체기≠
  • [640] 구해 방정식(좌우 표현식 획득 상수와 변수 계수를 각각 처리)
  • [728. 자가 할당 수
  • 면접문제 16.07.최대 수치(위치 연산, (sum+abs)/2)≠

  • 좋은 웹페이지 즐겨찾기