그래서 나는 Cormen에서 붉은 검은 나무를 배웠습니다. 일반적으로 의사 코드를 살펴 보지 않고 처음부터 다시 작성할 수있을 정도로 모든 알고리즘과 데이터 구조를 이해하고 싶습니다. 나는 알고리즘을 정말 좋아하기 때문에 알고리즘의 작동 방식을 배우고 일반적으로 한 줄씩 진행하고 코드를보고 어떤 일이 일어나고 있는지 이해하는지 확인하여 몇 가지 사례를 시도합니다.
무슨 일이 일어나고 있는지 이해하면 RB 나무에 많은 시간이 걸렸습니다. 이 책의 설명에도 불구하고 여전히 코드를 이해하기가 어렵다는 것을 알았습니다. 회전이 어떻게 / 왜 작동하는지 이해할 수 없다는 것은 말할 것도 없습니다. 나는 그것이 직관적이지 않다. 삽입에 대한 세 가지 (실제로 여섯) 다른 경우와 삭제에 대한 네 가지 경우를 의미합니까? 이것을 이해할 수 있습니까? 부정하지 않고이 코드를 다시 작성하는 것은 불가능합니다. 바이너리 트리가 될 때까지 나는 머릿속에서 물건을 구현할 수 있었고, 약간 조정하면 항상 작동하지만 RB 트리는 시도조차하지 않습니다. 선생님도 가끔 혼란스러워서 그렇게 쉽지 않다고 생각하지만 동시에 일어나는 모든 일을 이해하지 않아도됩니까? 그 책은 실제로 회전에 대한 아이디어를 누군가가 생각해 냈습니다. 누군가 2 회전으로 삽입 문제를 해결할 수 있음을 어떻게 알았습니까? 그 놀라운!
내 질문은, 실제로 RB 트리를 100 % 이해해야합니까? 완전히 이해하지 못하면 물건을 건너 뛰는 기분이 들었습니다. 미리 감사드립니다! (PS : RB-tree에는 태그가 없으며 실제로는 트리, 이진 트리에는 태그가 없으므로 알고리즘 만 넣습니다)