BST에서 검색 할 때 가능한 검색 경로 수


13

다음 질문이 있지만 이에 대한 답변이 없습니다. 내 방법이 올바른지 감사하겠습니다.

Q. 이진 검색 트리에서 키 값 60을 검색 할 때 키 값 10, 20, 40, 50, 70, 80, 90을 포함하는 노드는 반드시 주어진 순서대로 진행되지 않습니다. 값 60이 포함 된 루트 노드의 검색 경로에서 이러한 키 값이 발생할 수있는 순서는 몇 개입니까?

(A) 35 (B) 64 (C) 128 (D) 5040

질문에서, 나는 주어진 모든 노드가 순회에 포함되어야하며 궁극적으로 우리는 키 60에 도달해야한다는 것을 이해합니다. 예를 들어, 그러한 조합 중 하나는 다음과 같습니다.

10, 20, 40, 50, 90, 80, 70, 60.

위에서 주어진 모든 노드를 통과해야하므로 10 또는 90으로 시작해야합니다. 20으로 시작하면 10에 도달하지 않습니다 (60> 20부터 오른쪽 하위 트리 20을 통과 함).

마찬가지로 80으로 시작할 수 없습니다. 80> 60이므로 80의 왼쪽 하위 트리를 가로 지르므로 90에 도달하지 않기 때문에 80으로 시작할 수 없습니다.

나머지 노드는 20, 40, 50, 70, 80, 90입니다. 다음 노드는 20 또는 90 일 수 있습니다. 앞에서 언급 한 동일한 이유로 다른 노드를 사용할 수 없습니다.

우리가 비슷하게 생각한다면, 각 수준에서 두 가지 선택이 있습니다. 7 개의 노드가 있기 때문에 처음 6 개에 대한 2 가지 선택과 마지막 하나에 대한 선택은 없습니다. 그래서 완전히있다

2 6 642222221 순열 = =2664

  1. 이것이 정답입니까?

  2. 그렇지 않다면 더 좋은 방법은 무엇입니까?

  3. 일반화하고 싶습니다. 노드가 제공 되면 총 가능한 검색 경로는2 n - 1n2n1

답변:


15

키 (60)를 찾고 있다면 우리는 숫자에 도달 적은 60보다 (더 큰 숫자가있는 곳) 우리는 바로 가서 우리는보다 적은 수를 충족하지 K . 이 인수는 반복 될 수 있으므로 숫자 10, 20, 40, 50은 검색 순서에 따라 순서대로 나타나야합니다.KK

마찬가지로, 키 (60)를 찾고 있다면 우리는 숫자에 도달 우리가 leftt 이동 (작은 숫자가있는 곳)과 우리보다 결코 충족 번호 크고 60보다 큰 K . 따라서 숫자 90, 80, 70이 순서대로 검색을 따라 발생해야합니다.KK

서브 시퀀스가 온전히 유지되는 한, 서열 10, 20, 30, 40, 50 및 90, 80, 70은 함께 섞일 수있다. 따라서 우리는 10, 20, 40, 50, 90, 80, 70뿐만 아니라 10, 20, 90, 30, 40, 80, 70, 50을 가질 수 있습니다.

이제 큰 숫자와 작은 숫자의 위치를 ​​선택하여 숫자를 계산할 수 있습니다. Aryabhata의 코멘트를 참조하십시오. 우리는 4와 3의 숫자로 된 두 개의 시퀀스를 가지고 있습니다. 몇 가지 방법으로 섞을 수 있습니까? 마지막 7 자리에서 더 큰 숫자의 경우 3 개의 위치를 ​​선택하고 작은 숫자의 경우 나머지 4 개의 위치를 ​​선택해야합니다. 나는 이것을 가지 방법으로 있다. 이 위치를 수정 한 후 전체 시퀀스를 알 수 있습니다. 예를 들어, 첫 번째 예에는 SSSSLLL 위치가 있고 두 번째 예에는 SSLSLL S가 있습니다.(73)

일반화를 요청하십시오. 항상 수는 찾은 수보다 작고 숫자는 더 큰 순서대로 고정됩니다. 더 작은 숫자는 올라가고, 큰 숫자는 내려 가야합니다. 그러면 숫자는 입니다.y ( x + yxy(x+yy)

추신 (편집). Gilles에게 감사의 말을 전합니다.


꼭 시도하고 싶습니다. 90,80,70 번은 함께 있어야하므로 단일 번호로 간주하십시오. _ 10 _ 20 _ 30 _ 40 _ 50 _ 같은 비유로 [10,20,30,40,50]을 4 개의 장소, 그것은 그러나 그것은 발생하는 일반적인 조합으로 나눠 져야합니다. (내가 이해할 수없는)2 42624
avi

@avi 아니요, 10, 20, 90, 30, 40, 80, 70, 50의 순서로만 함께있을 필요는 없습니다.
Hendrik Jan

1
@avi :이 방법으로 생각하십시오 : 크고 작은. 이제 5 개의 스몰과 3 개의 빅으로 8 개의 스팟이 있습니다. 어떻게 채우나요? 8을 선택합니다
Aryabhata

2
@HendrikJan 원래 질문에 30은 없었으며 7 개의 값만있었습니다. 7은 3이 (A)입니다.
Gilles 'SO- 악한 중지'

1
@HendrikJan-당신은 나에게 이것을 설명 할 수 있습니까 : 항상 발견 된 숫자보다 적은 숫자와 y 숫자는 상대적 순서로 고정되어 있습니다엑스와이
avi

1

동작을 텍스트로 변환합니다. 검색하는 동안 우리는이 노드를 순회했습니다.

여기에 이미지 설명을 입력하십시오

빨간색이 60보다 크고 파란색이 60보다 작은 것을 알 수 있습니다.

{에스,에스,에스,에스,,,}

7!4!×!=35
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.