티스토리 뷰
PreOrder + InOrder or PostOrder + InOrder로 Binary Tree 만들기
Korean Eagle 2023. 3. 8. 23:181. 동일한 Tree의 PreOrder, InOrder traverse의 결과가 담겨진 배열 2개가 주어질 때 Binary Tree를 만드는 문제이다.
2. 기본적으로 두개의 다른 Traverse 결과가 있으면 바이너리 트리를 만드는 알고리즘은 혼자서 찾기힘들기 때문에 기본적으로 인지하고 있는 것이 중요하다. -> 기본지식 (모르면 인터뷰에서 풀 수 없다.)
3. 문제는 잘 알려진 이 알고리즘을 어떻게 구현할지인데 상당히 까다롭다.
4. 재귀를 사용하여 문제를 풀 때는 Top down과 Botton up 둘 중 하는 사용하는데 일반적으로는 Botton up이 훨씬 직관적이고 많이 사용된다.
5. 이 문제는 Top down 방식을 사용하여 문제를 해결해야 편리하다. 익숙하지 않기 때문에 어려운 것이다.
5-1 배열이 끝나면 재귀가 끝나게 되는데 배열이 끝나면 작업도 끝나는 구조이다. 그래서 배열을 소모하는 문제는 Top Down이 편리하다.
5-2 루트를 만드는 것과 자식노드를 만드는 구조가 동일하다. 따라서 재귀가 당연히 사용되고 구조도 간단하다. 이 문제는 얼마나 Top down으로 재귀처리하는 것에 익숙한가이다.
5-3 순차적으로 preorder는 검색을 수행할 것이고 preorder와 inorder에서 일치하는 그 값이 현재의 root가 되므로 새로운 노드를 만들고 이 노드를 반환하면 된다. 이 반환값은 부모의 좌나 우측 자식이 된다.
5-4 선택된 inorder값 기준으로 좌우로 구분해서 재귀를 호출하고 결과를 좌우 자식노드에 대입하면 된다.
'Basic > Algorithms' 카테고리의 다른 글
Binary Tree에서 같은 숫자로만 구성된 subtree개수 구하기 (0) | 2023.03.08 |
---|---|
LeetCode 1041. Robot Bounded In Circle (0) | 2022.06.24 |
Questions : Partition Labels (0) | 2020.07.25 |
Questions : Reorder Data in Log Files (0) | 2020.07.25 |
Questions : Number of Islands (0) | 2020.07.25 |
- Total
- Today
- Yesterday
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
- RestTemplate
- Angular
- 하이버네이트
- WebMvc
- one-to-one
- Spring
- form
- 외부파일
- spring boot
- login
- hibernate
- 매핑
- Spring Security
- XML
- Rest
- 로그인
- 스프링부트
- 설정
- 설정하기
- 자바
- 상속
- MYSQL
- one-to-many
- Validation
- Many-To-Many
- mapping
- jsp
- 스프링
- Security
- crud