문자열의 대체 데이터 구조로 rope tree을 구현하려고합니다.형식이 잘못된 이진 로프 트리
위키 피 디아 페이지는 나무를 나누기위한 규칙에 대해 명확하지 않지만, these rules이 처음에는 효과가있는 것으로 보입니다. 그러나 몇 분할 작업 후 나는 잘못된 트리 결국 :
6
/\
/\
4 \
/\ \
/\ \
/ 2 4
/ /\ /\
4 2 3 4 7
A B C D E
숫자는 노드의 무게, 잎의 경우 문자열의 길이를 나타냅니다. 이 잘못된 형식의 트리에서는 하위 문자열 C에 도달 할 수 없습니다.
좋은 나무의 예. 위키피디아에 대한 설명에 따라 모든 캐릭터에 접근 할 수 있습니다.
6
/\
/\
/ 7
/ /\
4 3 \
/\/\ \
4 2 3 4 7
A B C D E
나는 CS 배경이 없으므로 트리에 무엇이 잘못되었는지 알지 못합니다. 나는이 나무에 문제를 올바르게 표현하는 법을 알지 못한다. 이 트리의 문제점 (CS 용어로)은 무엇이며 어떻게 해결할 수 있습니까?
의 무게를 가지고해야 감사!어떻게 든 나는 다음과 같은 규칙을 내 머리 속에 넣었다 : 노드의 무게 = node.left.weight + node.left.right.weight. 당신이 말했듯이, 그것은 node.left.weigth + node.left이어야합니다. (모든 올바른 것들의 무게) – user965972