⇒ 노드 두개를 매개변수로 넣고, 노드의 부모를 교체한다!
교체되는 노드(부모 없어짐) : u
교체할 노드 (부모 변경): v
u 노드의 부모가 nil이라면 (= u 노드가 루트노드라면) v 노드를 루트노드로 바꿔준다.u 노드가 부모의 왼쪽 자식이라면, u 노드의 부모의 왼쪽 자식을 v 노드로 바꿔준다.u 노드가 부모의 오른쪽 자식이라면, u 노드의 부모의 오른쪽 자식을 v 노드로 바꿔준다.v 노드의 부모를 u 노드의 부모로 바꿔준다.z**와 그 자리에 올릴 후계자 노드 **y**를 설정합니다. 또한 **y**의 원래 색상을 **y_original_color**에 저장한다.z**의 왼쪽 자식이 **t->nil**인 경우, 즉 왼쪽 자식이 없는 경우, **z**를 그 오른쪽 자식으로 대체한다.z**의 오른쪽 자식이 **t->nil**인 경우, 즉 오른쪽 자식이 없는 경우, **z**를 그 왼쪽 자식으로 대체한다.z**가 양쪽 자식을 모두 가진 경우, **z**의 오른쪽 서브트리에서 최소값을 가진 노드를 찾아 **y**에 할당합니다. 이후 **y**의 원래 색상을 **y_original_color**에 저장하고, **y**의 오른쪽 자식을 **x**로 설정한다.y**의 부모가 **z**인 경우, **x**의 부모를 **y**로 설정한다. 그렇지 않은 경우, **y**를 그 자리에 대체한 후 **y**의 오른쪽 자식을 **y**로 연결한다.z**를 **y**로 대체한 후, **y**의 왼쪽 자식을 **z**의 왼쪽 자식으로 설정하고, **y**의 색상을 **z**의 색상으로 설정합니다. 그 후 **z**를 해제한다.y**의 원래 색상이 검은색이었다면, rbtree_delete_fixup 함수를 호출하여 레드-블랙 트리의 규칙을 복구한다.