Treap 데이터 구조의 우선 순위 생성
-
21-12-2019 - |
문제
트레시 데이터 구조를 연구하고 있습니다.노드를 삽입 할 때 Treap은 노드의 우선 순위를 역으로 생성합니다.그러나 69 노드가 생성 된 우선 순위가 13 인 경우에는?
부모의 우선 순위는 자녀의 우선 순위보다 높아야합니다.Treap의 이진 트리 속성은 힙 속성과 충돌합니까?
나는 알고 싶다.고마워.
해결책
69 노드없이 사진에서 사진을 찍고 (69, 13) 노드를 추가하십시오.
1. split 기존의 트레리 2 reaps l와 r 키 69 (여기서 모든 오래된 treap가 l)
2. 생성
3. merge m을 가진 m, 그 다음 r
이 경우 노드 (69, 13)가 새로운 루트가되고, 오래된 트리가 왼쪽 자식이 될 것입니다.
다른 팁
노드 69가 우선 순위 13을 가졌으면 트리의 루트와 노드 31은 왼쪽 자식이 될 것입니다.노드 (31)의 자손은 노드 69의 물론을 제외하고 다이어그램에서와 마찬가지로
항상 힙과 바이너리 검색 속성을 모두 존중할 수 있도록 트레시를 정렬 할 수 있습니다.사실, 동등한 값이나 동등한 우선 순위가없는 경우, 하나의 가능한 배열 만 있습니다.
우선 순위의 무작위적 지정은 Treap이 합리적으로 균형을 이룰 가능성이 큽니다.그것은 완벽하게 균형을 이루지 않을 수도 있지만, 긍정적 인 측면에서 Treap는 빠르고 복잡하지 않습니다.
제휴하지 않습니다 StackOverflow