이진 검색 트리의 최소값을 제거해야하지만 현재는 깨끗한 코드를 가지고 있습니다. 나는이에 도착하면참조 개체 키를 null로 설정하면 예상대로 작동하지 않습니다.
MTE tempElement = root;
if(root == null) return;
else if((root.left == null) && (root.right == null))
{
root = null;
return;
}
else if(root.left != null)
{
while(tempElement.left != null) tempElement = tempElement.left;
if(tempElement.right == null) tempElement = null;
else tempElement = tempElement.right;
}
else if(root.right != null)
{
if(tempElement.left == null) root = tempElement;
else
{
while(tempElement.left != null) tempElement = tempElement.left;
root.val = tempElement.val;
if(tempElement.right == null) tempElement = null;
else tempElement = tempElement.right;
}
}
이 코드에있어 문제가있다 : 나는 일을 예상대로 '는 t는이 코드를 (MTE는, MTE 왼쪽 MTE의 오른쪽 INT 발 키를 가지고)있어, 작업 코드 줄 - if(tempElement.right == null) tempElement = null;
내가 제공 한 코드 조각의 13 번째 줄은 어느 것입니까? 디버깅 할 때 tempElement를 null로 변경하지만 기본 루트 요소는 노드를 변경하지 않습니다.
로컬 변수 인 tempElement를 null로 설정했지만 루트 필드는 설정하지 않습니다. 명백한 뿌리는 전혀 변하지 않습니다. – kaitoy