이 기사의 예는 Java를 사용하여 합병 및 삭제를 사용하여 이진 트리에서 노드를 삭제하는 방법에 대해 설명합니다. 참조를 위해 모든 사람을 위해 공유하십시오. 특정 분석은 다음과 같습니다.
구현 아이디어는 매우 간단합니다.
첫째 : 삭제할 노드를 찾으십시오
둘째 : 삭제 된 노드에 오른쪽 서브 트리가 없으면 왼쪽 하위 트리 체인이 부모 노드에 있습니다.
셋째 : 삭제 된 노드가 왼쪽에 있지 않으면 왼쪽 하위 트리 체인이 상위 노드로
FORM : 삭제 된 노드가 왼쪽과 오른쪽 인 경우 삭제 노드 후 하위 트리를 병합 할 수 있습니다. 노드를 삭제하는 왼쪽 하위 트리의 오른쪽 노드를 사용하는 두 가지 방법이 있습니다. 오른쪽 서브 트리를 가리 킵니다. 삭제 노드와 다른 하나는 삭제 된 노드의 왼쪽 하위 트리를 삭제 된 노드의 단어 수의 가장 왼쪽 노드로 가리키는 것입니다.
Java 구현은 다음과 같습니다.
공개 void deletebyerring (int el) {intbstnode tmp, node, p = root, prev = null;/*삭제 될 노드를 찾으십시오 (p! = null && key! = el) rev = p; .key <el) p = p.right; else*/node = p 찾기 (p! = null && p.key == el). ) // 노드는 Node.left에 첨부되어 있습니다 node.richt에 첨부. {tmp = node.left; ; // 왼쪽 하위 트리의 가장 오른쪽 노드와 오른쪽 subtreenode = node.left;} 사이의 링크를 설정합니다. if (p == root) = node;} else if (prev.left == p) {prev. .left = node;} else prev.richt = node} else if (root! = null) {System.out.println ( "노드가 나무에 있지 않습니다") ( "트리는 비어 있습니다");이 기사는 모든 사람의 Java 프로그램 설계에 도움이되기를 바랍니다.