자바 이 진 트 리 기초 원리 및 구현 방법 상세 설명
4636 단어 Java두 갈래 검색 트 리
앞에서 말 했 듯 이 본 고 는 먼저 이 진 트 리 기초 지식 을 알 아 본 다음 에 2 분 검색 트 리 를 배 우 는 것 으로 바 뀌 었 다.
나무
1.1 트 리 정의
나무(Tree)는
n(n>=0)
개 노드 의 유한 집합 이다n=0
시 를 빈 나무 라 고 부른다.임의의 빈 나무 중:(1)뿌리(Root)라 고 불 리 는 특정한 노드 만 있다.
(2)4.567914.1 일 때 나머지 노드 는 4
n>
서로 교차 하지 않 는 유한 집 으로 나 눌 수 있다m(m>0)
그 중에서 모든 집합 자 체 는 나무 이 고 뿌리 라 고 부른다.그 밖 에 나무의 정 의 는 다음 과 같은 두 가 지 를 강조해 야 한다.
(3)
T1、T2、......、Tn
시 뿌리 노드 는 유일한 것 이 고 여러 개의 노드 가 존재 할 수 없 으 며 데이터 구조 중의 나 무 는 한 개의 노드 만 있 을 수 있다.(4)
n>0
시 자나무 의 개 수 는 제한 이 없 지만 서로 교차 하지 않 을 것 이다.아래 그림 은 10 개의 노드 가 있 는 일반 나무의 구조 이다.
나무의 정 의 를 통 해 알 수 있 듯 이 나무의 정 의 는 재 귀적 인 방식 을 사용 했다.나무의 학습 과정 에서 중요 한 역할 을 한다.
이 진 트 리
2.1 이 진 트 리 정의
이 진 트 리 는
m>0
개 노드 의 유한 한 집합 으로 이 집합 또는 공 집(공 이 진 트 리 라 고 함)또는 한 개의 노드 와 두 그루 가 서로 교차 하지 않 고 각각 뿌리 노드 라 고 부 르 는 왼쪽 나무 와 오른쪽 나무 로 구성 된다.그림 2.1 은 일반 이 진 트 리 구 조 를 보 여 준다.
2.2 이 진 트 리 특징
이 진 트 리 의 정의 와 그림 분석 을 통 해 이 진 트 리 는 다음 과 같은 특징 이 있다.
(1)각 노드 에 최대 두 개의 서브 트 리 가 있 기 때문에 이 진 트 리 에는 2 보다 큰 노드 가 존재 하지 않 는 다.
(2)왼쪽 나무 와 오른쪽 나 무 는 순서 가 있 기 때문에 순서 가 임의로 뒤 바 뀌 어 서 는 안 된다.
(3)나무의 한 노드 에 한 그루 의 나무 만 있어 도 왼쪽 나무 인지 오른쪽 나무 인지 구분 해 야 한다.
이 진 트 리 는 동적 데이터 구조 이다.
코드 로 트 리 노드 를 표시 할 수 있 습 니 다.
class Node<E>{
E e;
Node left;
Node right;
}
2.2.1 특성
1.이 진 트 리 는 천연 적 인 재 귀 구 조 를 가지 고 있다.
이것 은 각 노드 의 왼쪽 나무 와 오른쪽 나무 가 모두 이 진 트 리 이기 때문이다(어떤 경우).그림 과 같다.
2.2.2 2 분 트 리 종류(전시)
유형 1:
유형 2:
유형 3:
유형 4:
형식 5:
3.이 진 트 리 검색
3.1 정의
이 진 트 리(Binary Search Tree)는 질서 있 는 이 진 트 리(ordered binary tree),정렬 이 진 트 리(sorted binary tree)라 고도 부 릅 니 다.빈 트 리 나 다음 과 같은 성질 을 가 진 이 진 트 리 를 말 합 니 다.
1.임의의 노드 의 왼쪽 나무 가 비어 있 지 않 으 면 왼쪽 나무 에 있 는 모든 노드 의 값 은 뿌리 노드 의 값 보다 작 습 니 다.
2.임의의 노드 의 오른쪽 나무 가 비어 있 지 않 으 면 오른쪽 나무 에 있 는 모든 노드 의 값 은 그의 뿌리 노드 의 값 보다 크다.
3.임의의 노드 의 왼쪽,오른쪽 트 리 도 각각 두 갈래 로 나 무 를 찾는다.
4.키 가 같은 노드(no duplicate nodes)가 없습니다.
따라서 이 진 트 리 로 저 장 된 요 소 는 비교 가 가능 해 야 합 니 다.
3.2 두 갈래 검색 트 리 의 성질:
이 진 트 리 는 본질 적 으로 이 진 트 리 이기 때문에 위의 장 에서 말 한 이 진 트 리 의 성질 을 그 는 모두 가지 고 있다.
3.3 2 분 검색 트 리 의 사상:
이 진 트 리 의 검색 과정 은 차 우 이 진 트 리 와 유사 하 며,일반적으로 이 진 트 리 를 이 진 트 리 의 저장 구조 로 한다.중간 순서 로 이 진 트 리 를 옮 겨 다 니 면 키워드 의 질서 있 는 서열 을 얻 을 수 있 습 니 다.하나의 무질서 한 서열 은 이 진 트 리 를 구성 하여 질서 있 는 서열 로 바 꿀 수 있 습 니 다.트 리 를 구성 하 는 과정 은 바로 무질서 한 서열 을 정렬 하 는 과정 입 니 다.매번 삽 입 된 새로운 결점 은 이 진 정렬 트 리 에 있 는 새로운 잎 결점 입 니 다.삽입 작업 을 할 때 다른 결점 을 이동 할 필요 가 없습니다.특정한 결점 의 지침 을 바 꾸 고 빈 것 에서 비 어 있 는 것 으로 바 꾸 면 됩 니 다.검색,삽입,삭제 의 복잡 도 는 나무 높이 와 같 습 니 다
n(n>=0)
추 후 하나씩 학습 합 니 다.4.프로 그래 밍 으로 두 갈래 검색 트 리 구현
4.1 기본 코드
이 진 트 리 에 저 장 된 요 소 는 비교 가능성 이 있어 야 하기 때문에 구현 시 BST 클래스 계승 Comparable 이 필요 합 니 다.
package BST;
public class BST<E extends Comparable<E>> {
//
private class Node {
public E e;
public Node left, right;
public Node(E e) {
this.e = e;
left = null;
right = null;
}
}
private Node root;//
private int size;
public BST() {
root = null;
size = 0;
}
//
public int size() {
return size;
}
//
public boolean isEmpty() {
return size == 0;
}
}
이 절 은 이 진 트 리 의 입문 이 라 고 할 수 있 으 며 추 후 계속 보완 되 고 업 데 이 트 될 것 입 니 다.자바 알고리즘 과 관련 된 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 고 에서 말 한 것 이 여러분 의 자바 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.