데이터 구조에 대한 책을 읽었으며 왼쪽 균형 이진 트리가 잎이 마지막 레벨의 가장 왼쪽 위치 만 차지하는 트리라고 말합니다. 이것은 다소 모호하게 보입니다. 이는 잎이 뿌리의 왼쪽에만 있고 전체 레벨에 걸쳐 분포되어 있거나, 또는 나무 전체의 왼쪽에만 존재한다는 것을 의미합니까? 정확히 무엇이 왼쪽 균형을 이루고 있습니까? 내 추측에 대한 답변도 포함되어
각 노드의 가중치를 사용하여 이진 검색 트리 (int를 사용하지만 범용 설계됨)의 균형을 유지하는 재귀 적 Java 메소드를 빌드하고 있습니다. 내 목적을 위해, 노드의 무게가 균형의 끝에서 + 1. 2
/ \
1 3
The weight of the root is 3, and the weight of both leaves is 1.
아이의 수로
N 노드가있는 상수 (변경되지 않은 경우) 균형 트리가 있고 모든 내부 노드에 p 개의 자식이 있다고 가정합니다. 분명히 노드에 액세스하는 최악의 시나리오는 logp (N)입니다. 그러나 r 노드에 액세스하기위한 상각 된 비용은 어떻게됩니까? 오름차순으로 검색 트리에 액세스하면 어떻게 될까요? 그냥 (logp (N))/r입니까?
업데이트 : "doAVLBalance"가 "isBalanced()", "isRightHeavy()"멤버 함수를 인식 할 수 없기 때문에 "균형 조정" ","isLeftHeavy ". 왜 그런지 모르겠습니다! Sash의 예제 (세 번째 대답)를 정확하게 시도했지만 "감속이 호환되지 않습니다."라는 오류를 수정하지 못했습니다 ... 그래서 내 방식대로 시도했지
"Coding Interview Cracked"라는 책을 읽었습니다. BST가 균형을 잡았는지 아닌지를 확인하기 위해 최대 높이와 최소 높이의 차이를 알아 냈지만 그것이 100 % 맞는지 확실하지 않습니다. 카운터 테스트 케이스를 찾을 수 없지만. 누구나이 접근법이 올바른지 여부를 확인할 수 있습니까? 트리의 균형이 맞는지 여부를 확인합니다. |MaxH
C++에서 레드 - 블랙 트리를 구현하고 있지만 회전 방법에 문제가 있습니다. 삽입 방법은 균형을 유지하지 않고 잘 작동하지만 회전을 시도하자마자 나무가 정보를 잃어 버립니다. 내 생각 엔 올바른 방법으로 노드에 대한 포인터를 설정하지는 않지만 여기서 잘못된 점이 무엇인지 정확히 이해하지 못한다. void RedBlackTree::rotateRight(Re
KD 트리 균형을 조정할 때 중간 값을 찾아 왼쪽 하위 트리와 그 오른쪽에있는 모든 요소를 줄여야합니다. 그러나 중앙값과 동일한 값을 가진 요소가 여러 개 있으면 어떻게됩니까? 그들은 왼쪽 하위 트리, 오른쪽에 들어가거나 그들을 버립니 까? 여러 가지 일을 시도했기 때문에 가장 가까운 이웃 검색 알고리즘의 결과에 영향을주고 트리의 지정된 섹션에 대한 모
트리 요청을 수동으로 요청 (bst> avl)하고 정말 쉽다는 것을 궁금해합니다. 그래서 올바르게 수행했는지 확신 할 수 없습니다. a
/\
b e3
/\
e1 e2 초기 상태이다 'A' 'B'(좌측) 및 "E3"(우측)의 부모이고, B는 (좌측) "E1 '및'E2 '의 부모 (인 권리). 우회전을 적용이 우리에게
내 나무의 균형 부분에 문제가 발생했습니다. 재귀 삽입 후 checkBal이 호출됩니다. 5, 2, 4를 추가하려고하면 2의 균형을 확인한 다음 5까지 계속 백업 한 다음 올바른 rotate의 왼쪽 부분으로 이동합니다. 그러나 두 번째 줄의 rotateLeft 함수 오류. 이 구현에는 어떤 문제가 있습니까? 나는 온 세상을 수색 해본 결과 내가 한 일이 사