2013-12-11 5 views
0

BST를 배우기 때문에 하위 노드의 특정 배치에 대해 몇 가지 질문이 있으며 일부 소스를 읽고 일부 온라인 삽입 애플릿을 수행 한 후에도 상당히 혼란 스럽습니다. 빈 기본 BST에 노드 5,7,3,4을 추가하려고한다고 가정 해 봅시다.기본 및 균형 BST 삽입 노드 배치

add 5 

    5 

add 7 

    5 
     7 

add 3 

    5 

3  7 

add 4 

    5 

3  7 

    4 

좋아, 나는 왼쪽 아이가 부모보다보다 작거나 같은 부모에서 바로 아이 동일 수 있다는 사실을 잘 알고 있습니다. 나는 우리가 4 노드를 추가 할 때까지 그것을 따른다. 어떻게 우리는 4의 삽입이 왼쪽 하단 잎 위치 대신 3의 바닥 오른쪽 잎 위치로가는 것을 결정합니까? 또한 노드 5,18,3,7,11의 AVL 삽입을 수행하면 놀라운 위치 게재 위치가 생성되었습니다. 네 번째 노드 인 7을 삽입하는 것은 3 대신 18을 거쳤습니다. 특별한 이유가 있습니까? 올바른 방법이라고 가정하면 11을 삽입하면 11과 18 지점을 전환하지만 부모 노드로 18을 가지지 않고, 왼쪽 자식으로 7을, 오른쪽 자식으로 11을 부모와 작은 것보다 작은 왼쪽 자식의 원칙에 부합시키지 않을 것입니다 또는 오른쪽 아이와 동등한가? 나는 혼란스러워! 나는 어떤 도움을 주셔서 감사합니다. 고맙습니다!

인서트 7

5 

3 18

7 

인서트 11

5 

3 11

7 18 

답변

0

BST에서 노드의 왼쪽 (오른쪽) 하위 트리의 요소는 모두 하위 트리의 루트 부모보다 작습니다 (큰). 그래서, 5의 왼쪽 서브 트리에서, 3과 4는 모두 5보다 작습니다. 이제 3을보십시오. 4가 오른쪽으로가는 이유는 4가 3보다 크기 때문입니다.

AVL 질문과 동일합니다. 7은 5의 뿌리이기 때문에 3의 올바른 자녀 대신에 18의 왼쪽 자녀가되었습니다. 삽입 작업을 수행 할 때 한 번에 한 수준 씩 요소를 비교합니다. "7이 5 (루트)보다 큰가요? 네, 오른쪽으로 가십시오. 7이 18보다 큰가요? 아니, 왼쪽으로 가라. 비교할 노드가 없으니 7이 여기에있다."

오른쪽 자식으로 11을 사용하면 BST에 적합하지 않습니다. 11은 18보다 작으므로 18을 루트로하는 왼쪽 하위 트리에 있어야합니다.