주어진 순회 방법 (inorder, post-order 또는 pre-order)에서 이진 트리를 어떻게 찾을 수 있습니까?주어진 순회에서 어떻게 이진 트리를 찾을 수 있습니까?
답변
중위에 대한 위키 피 디아 기사는, 이후 순서는 예약 주문 트리 탐색은 여기에 있습니다 :
http://en.wikipedia.org/wiki/Tree_traversal.
찾고있는 트리는 검색어와 일치하는 노드에서 시작됩니다.
트래버스 결과를 사용하여 원본 트리를 복원하려는 경우 몇 가지 나쁜 소식이 있습니다. 명확한 해결책은 없습니다. 동일한 트래버스 결과를 생성 할 수있는 여러 개의 트리가 있습니다.
동일한 결과를 생성합니다 중위 순회 다음 나무에 대한 예를 들면 : 당신은 하나의 통과 (중위, 예약 주문 또는 Postorder)로하여이 작업을 수행 할 수 없습니다1, 2, 3
2 3 1
/\ / \
1 3 2 2
/ \
1 3
.
트리의 중위 & 전순 주사가 주어진다면 그것은 수행 할 수 있습니다: 전순의
- 첫 번째 요소는 나무의 뿌리가 될 것입니다. (A라고 가정하십시오)
- Inorder에 Searc 루트가 있으므로 root의 왼쪽에있는 모든 노드는 왼쪽 하위 트리의 Inorder이고 오른쪽 노드는 오른쪽 하위 트리의 Inorder입니다. 루트의 왼쪽에있는 노드의 수를 계산하십시오. L.
- 두 번째 L 노드로부터의 포스트 오더는 왼쪽 하위 트리의 선주문이되며 그 후에 오른쪽 하위 트리의 사전 순서입니다.
우리는 루트 요소를 발견하고 왼쪽 하위 트리의 Inorder, 오른쪽 하위 트리의 Inorder 및 Preorder를 왼쪽 하위 트리와 오른쪽 하위 트리의 사전 주문에 배치했습니다. 그래서 하나의 노드 만 남아있을 때까지 재귀를 통해이를 수행 할 수 있습니다.
마찬가지로 Inorder와 Postorder에서 root가 게시물 순서의 마지막 요소가 될 수 있습니다.
+1 ... 물론입니다! –
(좋아, 우리는 amended question뿐만 아니라 거기에 내 대답을 게시, 여기해야한다고 결정했습니다 이후) 이진 트리의
Postorder 및 중위 순회가 가능 얻기 위해 below.Is 주어진다 이 순회의 고유 한 이진 트리?
가능합니다.
포스트 트리 탐색 (왼쪽 - 오른쪽 루트)에서 전체 트리의 루트 노드는 항상 마지막 것입니다 (귀하의 경우에는 A입니다). inorder traversal (left-root-right)에서 루트 이전의 노드는 왼쪽 서브 트리에 속하고 루트 뒤의 노드는 오른쪽 노드에 속합니다. 이미 루트를 결정 했으므로 왼쪽 하위 트리와 오른쪽 하위 트리에서 노드를 결정할 수 있습니다.
결론은 우리는 후순위 목록에서 왼쪽 및 오른쪽 하위 트리를 구분할 수 있다는 것입니다.이제 왼쪽 및 오른쪽 하위 트리와 루트 노드를 결정했습니다.
postorder: left|right|root
inorder : left|root|right
이제 우리는 왼쪽 및 오른쪽 하위 트리를 재귀 적으로 만들어야합니다. 지느러미.
- 1. 일치하는 하위 트리를 어떻게 찾을 수 있습니까?
- 2. 파이썬에서 주어진 데이터로부터 이진 트리를 생성합니다.
- 3. 주어진 파일의 경로는 어떻게 찾을 수 있습니까?
- 4. 이진 트리를 채워서 bst로 만드는 방법의 수
- 5. 이진 트리를 만드는 방법
- 6. 어떻게 트리를 만들 수 있습니까?
- 7. 주어진 형식의 문자열을 파싱하여 이진 의사 결정 트리를 작성하십시오.
- 8. C# BinaryFormatter - 어떻게 이진 데이터의 클래스를 찾을 수 있습니까?
- 9. 이진 트리는 preorder를 기반으로 트리를 구성합니다.
- 10. 최소한의 원이 주어진 점을 어떻게 찾을 수 있습니까?
- 11. 주어진 호스트에 대한 연결이 라우팅되는 인터페이스를 어떻게 찾을 수 있습니까?
- 12. 주어진 보석에 의존하는 보석을 어떻게 찾을 수 있습니까?
- 13. 이진 검색 트리를 만드는 것은
- 14. C++에서 이진 트리를 시각화하는 방법
- 15. 주어진 이진 비트의 모든 순열을 찾을 수있는 최상의 알고리즘
- 16. 어떻게 shp2pgsql을 찾을 수 있습니까?
- 17. nodeType을 어떻게 찾을 수 있습니까?
- 18. 이것을 어떻게 찾을 수 있습니까?
- 19. MongoDB에서 트리를 인덱스 할 수 있습니까?
- 20. 은 파이썬에서 이진 검색 트리를 나타냅니다.
- 21. MATLAB에서 이진 이미지를 어떻게 반전시킬 수 있습니까?
- 22. 주어진 DLL이 주어진 프로세스에 의해로드되었는지 어떻게 알 수 있습니까?
- 23. 주어진 BSP 트리가 최적인지 어떻게 테스트 할 수 있습니까?
- 24. 이진 의사 결정 트리를 표시하는 도구
- 25. 효율적인 방법으로 객체 트리를 살펴볼 수 있습니까?
- 26. 주어진 모양의 antlr 트리를 만들려면 어떻게해야합니까?
- 27. 링크 목록에 이진 검색을 적용하여 요소를 찾을 수 있습니까?
- 28. 리스트를 사용하지 않고 이진 트리를 허용하기
- 29. 이진 트리를 정렬 된 배열로 변환
- 30. 임의로 큰 이진 트리를 inorder로 건너 뜁니다.
자세한 정보를 제공 할 수 있습니까? 예를 들어, 어쩌면? – Aziz
죄송합니다. 편집 사항이 충돌했습니다. 너를 통합 했어. –
lol 아무 문제 없어 :) – Aziz