2016-12-16 3 views

답변

0

을 어디는 (검색 트리 같은) 정렬 된 나무 인 경우 노드를 삭제합니까 싶어, 당신은 것 일반적으로 노드 (예 : 2)를 제거하고이를 왼쪽 하위 하위 트리 (3)의 가장 오른쪽 리프 또는 오른쪽 하위 트리 (4)의 가장 왼쪽 리프로 바꿉니다. 바이너리 검색 트리가 아닌 경우 동일한 작업을 수행 할 수 있습니다. 그것은 물론 당신의 나무의 의미와 구조가 무엇을 대표하는지에 달려 있습니다. 구조에 아무런 의미가없는 경우 삭제하려는 노드를 제거하고 임의의 리프 노드로 대체하십시오.

+0

0부터 3까지의 올바른 하위 항목을 연결하고 3에서 4까지의 오른쪽 자식을 연결하고 2를 해제해야합니까? –

+0

2의 왼쪽 하위 트리를 잊지 마라! 아마도 3 이상을 포함 할 수도 있습니다. 할당을 해제하는 재귀 루틴이있는 경우 2의 자식 포인터에주의하십시오 (노드 2를 해제하기 전에이를 NULL로 설정해야 할 수도 있음). 또 다른 옵션은 현재 3이있는 리프에서 데이터 (3)을 삭제하려는 값 (2)으로 이동 한 다음 리프 노드를 해제하는 것입니다. 교체는 리프 노드에서 이루어져야한다는 것을 기억하십시오. 예를 들어 0을 삭제하려면 2를 선택하지 마십시오. – e0k