Moait
홈인기 피드모든 블로그모든 태그
홈인기 피드모든 블로그모든 태그
Non-recursively deleting a binary tree in constant space: Restructuring the tree 섬네일

Non-recursively deleting a binary tree in constant space: Restructuring the tree

Microsoft Developer faviconMicrosoft Developer·Backend·
AlgorithmsBinary TreeNon RecursivePostorder TraversalData Structures
2025년 11월 07일1

AI 요약

이 글은 AI가 요약했어요. 정확한 내용은 꼭 원문을 확인해 주세요!

핵심 요약

Microsoft Developer가 이진 트리의 노드를 상수 공간으로 비재귀적으로 삭제하는 알고리즘을 제시했다.

구현 방법

  • 포인터 조작 기반의 C++ 구현으로, 루트에서 시작해 왼쪽most 노드를 찾고 오른쪽 서브트리를 왼쪽most의 왼쪽에 접목한다.
  • 루트를 삭제하고 왼쪽 자식을 새 루트로 승격하는 과정을 트리가 남아 있는 동안 반복한다.
  • 각 노드 삭제 시 왼쪽 포인터를 두 번, 오른쪽 포인터를 한 번씩 순회한다.
  • 보너스: 루트에 오른쪽 자식이 없으면 null이 접목되어도 동작에 영향이 없다.

주요 결과

  • 시간 복잡도: O(n) — 각 노드 한 번 삭제, 오른쪽 링크 한 번 접목, 왼쪽 링크 두 번 순회
  • 공간 복잡도: 상수 공간 사용
  • 구현이 간결하고 프리오더 유사한 삭제 순서를 보장한다.

연관 피드

%가 높을수록 이 글과 비슷할 가능성이 높아요!
Non-recursively deleting a binary tree in constant space: Traversal with parent pointers 섬네일
90%

Non-recursively deleting a binary tree in constant space: Traversal with parent pointers

Microsoft Developer faviconMicrosoft Developer·2025년 11월 05일
Non-recursively deleting a binary tree in constant space: Synthesizing the parent pointer 섬네일
87%

Non-recursively deleting a binary tree in constant space: Synthesizing the parent pointer

Microsoft Developer faviconMicrosoft Developer·2025년 11월 06일
멀티 테넌트 데이터를 격리하고 더 안전하게 만드는 방법 섬네일
53%

멀티 테넌트 데이터를 격리하고 더 안전하게 만드는 방법

NHN Cloud faviconNHN Cloud·2024년 10월 21일