이미지 (정사각형 이미지)는 트리로 저장할 수 있습니다. 이미지가 흰색이면 노드가 흰색이고 이미지가 검은 색이면 검은 색이며 이미지가 모두 포함되어 있으면 혼합됩니다. 흰색 노드와 검은 색 노드는 나뭇잎이며, 혼합 노드는 이미지에서 4 사분면을 나타내는 정확히 4 개의 자식을 갖습니다. 주어진 2 개의 이미지 (나무), 그들의 교차점을 나타내는 이미지를 찾으십시오. (교차로 : B^B -> B, B^W -> W, W^W -> W) 이것은 Google 인터뷰 질문입니다이미지 데이터 구조
답변
둘 다 이진 트리로 표시되므로 트리 구조를 탐색해야합니다 루트에서 시작하여 언제든지 두 트리의 노드 색상을 확인하고 다른 트리에 결과를 저장합니다. 둘 중 하나라도 검은 색이나 흰색이면 더 이상 횡단을 멈 춥니 다. 그렇지 않으면 그 중 하나가 둘 다 단일 색상으로 발견 될 때까지 그 노드에서 추가로 횡단합니다.
이것은 반드시 이진 트리가 아니며, 혼합 된 노드에는 4 개의 자식 노드가 있습니다.이 알고리즘은 –
이 잘못되었습니다. – FUD
다음과 같은 간단한 방법이 있습니다. 동일한 순서를 사용하여 두 트리를 동시에 트래버스합니다. 그렇게하는 동안 출력 트리를 빌드하십시오. 그런 다음 : 당신은 두 나무의 혼합 노드, 출력 혼합 노드를 참조하면
- 는
- 하나 나무에 혼합 노드, 그러나 다른 출력 흰색 노드에 흰색 노드를 참조 (그리고 경우 무시 순회의 혼합 노드)
- 하나의 트리에는 혼합 노드가 있지만 다른 노드에는 검정 노드가있는 경우 혼합 노드와 그 자식을 출력 트리에 복사하십시오.
- 두 개의 흰색 노드가 표시되면 출력 흰색 노드
- 두 개의 검정 노드가 표시되면 검은 노드를 출력하십시오.
실제로는 흰색 자식 만있는 혼합 노드를 만들 수 있으므로 흰색 자식 만있는 혼합 노드를 축소하는 트리를 가로 지르는 압축 단계가 필요할 수 있습니다.
편집 : 출력 검정 노드가 아래에 있는지 여부를 재귀에 알리는 것으로 압축 단계를 피할 수 있다고 생각합니다. 대답이 '아니오'인 경우 흰색 잎을 넣습니다.
- 1. 데이터 구조
- 2. 데이터 구조
- 3. imagelinks의 데이터 구조
- 4. 동적 데이터 저장을위한 데이터 구조
- 5. 데이터 스트리밍에 사용할 데이터 구조
- 6. 데이터 형식 및 파일 구조
- 7. C++ 데이터 구조 시각화
- 8. 공간 데이터를위한 데이터 구조
- 9. 아약스에 데이터 구조 보내기
- 10. Python의 데이터 구조
- 11. 데이터 구조 변경 R
- 12. 주요 JavaScript 데이터 구조
- 13. 데이터 테이블 구조
- 14. 회로 전환을위한 데이터 구조?
- 15. Clojure 데이터 구조 함수
- 16. roguelike 맵용 데이터 구조
- 17. 핵심 데이터 구조
- 18. 패킷 데이터 구조?
- 19. soundex 알고리즘의 데이터 구조?
- 20. Java의 분산 데이터 구조
- 21. 힙 데이터 구조
- 22. 직렬 포트 데이터 구조
- 23. 데이터 구조, 텍스트
- 24. 클래스의 데이터 구조
- 25. C++에서지도 데이터 구조
- 26. 크롤러의 데이터 구조
- 27. 최적화를위한 데이터 구조
- 28. 로프 데이터 구조
- 29. 데이터 구조 제안!
- 30. 동시 데이터 구조 테스트
"이것은 Google 인터뷰 질문입니다."- 그러나 여기에는 진정한 질문이 아닙니다. –
진짜 질문은 무엇입니까? –
Google 인터뷰에서 묻는 모든 질문을 게시하는 것 같습니다. –