Skip to content

Commit

Permalink
Merge pull request ZoranPandovski#2684 from ssu00/master
Browse files Browse the repository at this point in the history
Created README.md and added Korean version
  • Loading branch information
ZoranPandovski authored Nov 22, 2020
2 parents c9a0465 + 5c8b562 commit 23c48a2
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 0 deletions.
7 changes: 7 additions & 0 deletions data_structures/Tree/AVL-tree/c++/README(KR).md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# AVL-Tree
이진 탐색 트리가 한 쪽으로 쏠려 있다면, 최악의 경우 원하는 자료를 찾기 위해 루트 노드부터 리프 노드까지 모두 탐색을 해야 한다. 이러한 단점을 보완하기 위해 AVL 트리가 고안되었다. AVL 트리는 이진 탐색 트리이면서, 동시에 균형을 유지하고 있다. 즉, 모든 노드의 왼쪽, 오른쪽 서브 트리의 높이 차이가 1 이하이다.

![그림2](https://user-images.githubusercontent.com/63658525/99893569-7c90ab00-2cc4-11eb-9278-81f562a8690c.png)

위 사진은 AVL 트리의 예시이다. 트리에 적혀 있는 숫자들은 balance factor이다. Balance factor는
hL-hR로 정의되며, hL은 왼쪽 서브 트리의 높이, hR은 오른쪽 서브 트리의 높이이다. 주어진 트리가 AVL 트리인지는, balance factor를 통해 확인할 수 있다. 만약 balance factor가 -1, 0 또는 1이라면, 이 트리는 AVL 트리이다.
7 changes: 7 additions & 0 deletions data_structures/Tree/AVL-tree/c++/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# AVL Tree
When we find a data we want in a skewed binary search tree, we have to search from root node to leaf node in a worst case. To improve this problem, we can use AVL tree. AVL tree is a height-balanced binary tree. In other words, all the height difference between left subtrees and right subtrees are less than 1.

![그림2](https://user-images.githubusercontent.com/63658525/99893569-7c90ab00-2cc4-11eb-9278-81f562a8690c.png)


These are the examples of AVL trees. The numbers written in the trees are balance factor. Balance factor is defined as hL-hR (hL is the height of left subtree, and hR is the height of right subtree). We can figure out if this is AVL tree, by balance factor. If balance factor is -1 or 0 or 1, it’s AVL tree.
4 changes: 4 additions & 0 deletions data_structures/Tree/B-Tree/C/README(KR).md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# B-Tree

B-tree는 2개 이상의 자식 노드를 가지는 트리를 뜻한다. B-tree는 3가지의 조건을 만족해야 한다. 첫 번째로, 루트 노드는 적어도 2개의 자식 노드를 가져야 한다. 두 번째로, 루트 노드와 external 노드가 아닌 모든 노드들은 적어도 [m/2] 개의 자식 노드를 가져야 한다. 마지막으로, 모든 external 노드들은 같은 level에 있어야 한다.
노드 내의 데이터는 1개 이상일 수 있으며, 이때 데이터들은 반드시 정렬된 상태여야 한다. 또한, 노드 데이터를 기준으로 데이터보다 작은 값은 왼쪽 서브 트리에, 큰 값은 오른쪽 서브 트리에 들어간다.
4 changes: 4 additions & 0 deletions data_structures/Tree/B-Tree/C/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# B-Tree

B-tree is a tree with two or more child nodes. B-tree must satisfy three conditions. First, the root node must have at least two child nodes. Second, all nodes other than the root node and external nodes have at least [m/2] child nodes. Finally, all external nodes must be at the same level.
There can be more than one data within a node, and the data must be sorted. In addition, values smaller than the node’s data must be in the left subtree and values larger than the node’s data must be in the right subtree.
5 changes: 5 additions & 0 deletions data_structures/Tree/Binary-tree/README(KR).md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# 이진 트리

이진 트리는 각 노드마다 최대 2개의 자식 노드를 가지는 트리 데이터 구조이다. 단순히 집합론의 개념을 사용하는 재귀적 정의에서, 비어 있지 않은 이진 트리는 하나의 튜플 (L, S, R) 이다. 이때 L과 R는 이진 트리 또는 공집합이고, S는 싱글턴 집합이다.

[출처:https://en.wikipedia.org/wiki/Binary_tree]
8 changes: 8 additions & 0 deletions data_structures/Tree/README(KR).md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# 트리

컴퓨터 과학에서 트리는 추상 데이터 타입(ADT)로 널리 사용되는 데이터 구조로, 트리를 이용해 ADT를 구현할 수도 있다. 트리는 계층적 구조를 나타내며, 자식 노드와 부모 노드의 연결된 노드 집합으로 표현된다.
트리 데이터 구조는 노드의 모음으로 재귀적으로 정의할 수 있는데, 여기서 각 노드는 값과 노드에 대한 참조 목록으로 구성되어 있다. 참조는 중복되지 않으며, 루트 노드를 가리키지 않는다.
트리는 노드와 정점, 간선으로 이뤄지며 순환하지 않는 데이터 구조이다. 노드가 없는 트리를 null 또는 빈 트리라고 한다. 비어 있지 않은 트리는 루트 노드와, 계층 구조를 형성하는 수많은 레벨의 추가 노드들로 이루어져 있다.

![300px-Binary_tree svg](https://user-images.githubusercontent.com/63658525/99893386-caa4af00-2cc2-11eb-9fbe-e5af4f2a17a9.png)
[출처 : 위키피디아]
9 changes: 9 additions & 0 deletions data_structures/Tree/binary_search_tree/c++/README(KR).md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# 이진 탐색 트리

때때로 정렬된 이진 트리라고도 불리는 이진 탐색 트리는, 컴퓨터 과학에서 특정한 형태의 container(숫자, 이름 등의 item을 메모리에 저장하는 데이터 구조)이다. 이들은 item을 빠르게 조회, 추가, 제거하거나 key로 item을 찾거나, item들의 동적인 집합을 구현하는 데에 사용된다.
이진 탐색 트리는 key를 정렬된 순서로 유지하기 때문에, 여러 연산을 할 때에 이진 탐색의 원리를 사용할 수 있다. 트리 내에서 특정 key를 찾을 때에는, 루트 노드부터 리프 노드까지 순회하며 트리의 노드에 저장된 키와 값을 비교한다. 비교를 바탕으로, 왼쪽 혹은 오른쪽 서브 트리로 탐색을 계속할지 결정한다. 비교를 통해 트리의 약 절반 정도를 skip할 수 있으므로, 조회, 삽입, 삭제에는 트리에 저장된 항목 수의 로그에 비례하는 시간이 소요된다. 이는 정렬되지 않은 배열에서 item을 찾는 데에 필요한 선형 시간보다는 훨씬 빠르지만, hash table에서 이루어지는 연산보다는 느리다.
이진 탐색 트리의 몇 가지 변형 트리들은 컴퓨터 과학에서 연구되어 왔다. 이 article에서는 이진 탐색 트리의 기본 유형을 다루고 있다.

![300px-Binary_search_tree svg](https://user-images.githubusercontent.com/63658525/99893428-849c1b00-2cc3-11eb-8a30-3b6f42054cdd.png)

[출처:https://url.kr/2fRuno]

0 comments on commit 23c48a2

Please sign in to comment.