Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
2 changes: 1 addition & 1 deletion 13장_이진_트리/2_binary_tree.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ def is_root(self, value):
def get_height(self):
return self.root._get_max_height()

def is_balnced(self):
def is_balanced(self):
return self.root._is_balanced()

def is_bst(self):
Expand Down
14 changes: 7 additions & 7 deletions 13장_이진_트리/3_binary_search_tree.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,11 +74,11 @@ def add_node(self, value):
# for i in range(1, 10):
for i in [6, 4, 8, 2, 5, 7, 9, 1, 3]:
bst.add_node(i)
print("노드 8은 말단 노드입니까? ", bst.isLeaf(8))
print("노드 1의 레벨은? ", bst.getNodeLevel(1))
print("노드 10은 루트 노드입니까? ", bst.isRoot(10))
print("노드 1은 루트 노드입니까? ", bst.isRoot(1))
print("트리의 높이는? ", bst.getHeight())
print("이진 탐색 트리입니까? ", bst.isBST())
print("균형 트리입니까? ", bst.isBalanced())
print("노드 8은 말단 노드입니까? ", bst.is_leaf(8))
print("노드 1의 레벨은? ", bst.get_node_level(1))
print("노드 10은 루트 노드입니까? ", bst.is_root(10))
print("노드 1은 루트 노드입니까? ", bst.is_root(1))
print("트리의 높이는? ", bst.get_height())
print("이진 탐색 트리입니까? ", bst.is_bst())
print("균형 트리입니까? ", bst.is_balanced())
# pre_order(bst.root)
10 changes: 5 additions & 5 deletions 13장_이진_트리/4_AVL_BST.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def rotate(self, value):
self.height = 1 + max(self.get_height(self.left),
self.get_height(self.right))

# 3) 균형 요소(왼쪽 트리 높이 - 오른쪽 트리 높이)
# 3) 균형도(왼쪽 트리 높이 - 오른쪽 트리 높이)
balance = self.get_balance()

# 4) 트리의 균형이 맞지 않을 경우 회전한다.
Expand Down Expand Up @@ -60,8 +60,8 @@ def left_rotate(self):
x [y]
/ \ / \
y T3 <---- T1 x
/ \ (왼쪽 회전) / \
T1 T2 T2 T3
/ \ (왼쪽 회전) / \
T1 T2 T2 T3
"""
x = self.right
T2 = x.left
Expand All @@ -85,8 +85,8 @@ def right_rotate(self):
[x] y
/ \ / \
y T3 ----> T1 x
/ \ (오른쪽 회전) / \
T1 T2 T2 T3
/ \ (오른쪽 회전) / \
T1 T2 T2 T3
"""
y = self.left
T2 = y.right
Expand Down
9 changes: 5 additions & 4 deletions 14장_트리_순회/3_transversal_BST_ancestor.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@


def find_ancestor(path, low_value, high_value):
# 두 인수는 트리에 존재하는 노드여야 하며 두 번째 인수가 더 커야 한다.
while path:
current_value = path[0]
if current_value < low_value:
Expand All @@ -26,7 +27,7 @@ def find_ancestor(path, low_value, high_value):
path = bst.preorder()
print("전위 순회: ", path)

print("1과 6의 공통 상위 조상 :", find_ancestor(path, 1, 6))
print("1과 11의 공통 상위 조상: ", find_ancestor(path, 1, 11))
print("1과 4의 공통 상위 조상: ", find_ancestor(path, 1, 4))
print("8와 9의 공통 상위 조상: ", find_ancestor(path, 8, 9))
print("1과 6의 최소 공통 조상 :", find_ancestor(path, 1, 6))
print("1과 11의 최소 공통 조상: ", find_ancestor(path, 1, 11))
print("1과 4의 최소 공통 조상: ", find_ancestor(path, 1, 4))
print("8와 9의 최소 공통 조상: ", find_ancestor(path, 8, 9))
14 changes: 7 additions & 7 deletions 14장_트리_순회/binary_search_tree.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,11 +74,11 @@ def add_node(self, value):
# for i in range(1, 10):
for i in [6, 4, 8, 2, 5, 7, 9, 1, 3]:
bst.add_node(i)
print("노드 8은 말단 노드입니까? ", bst.isLeaf(8))
print("노드 1의 레벨은? ", bst.getNodeLevel(1))
print("노드 10은 루트 노드입니까? ", bst.isRoot(10))
print("노드 1은 루트 노드입니까? ", bst.isRoot(1))
print("트리의 높이는? ", bst.getHeight())
print("이진 탐색 트리입니까? ", bst.isBST())
print("균형 트리입니까? ", bst.isBalanced())
print("노드 8은 말단 노드입니까? ", bst.is_leaf(8))
print("노드 1의 레벨은? ", bst.get_node_level(1))
print("노드 10은 루트 노드입니까? ", bst.is_root(10))
print("노드 1은 루트 노드입니까? ", bst.is_root(1))
print("트리의 높이는? ", bst.get_height())
print("이진 탐색 트리입니까? ", bst.is_bst())
print("균형 트리입니까? ", bst.is_balanced())
# pre_order(bst.root)
Original file line number Diff line number Diff line change
Expand Up @@ -73,18 +73,18 @@ def deleteNodeByValue(self, value):
ll = LinkedListLIFO()
for i in range(1, 5):
ll._add(i)
print("연결 리스트:")
print("연결 리스트 출력:")
ll._printList()
print("인덱스가 2인 노드 삭제 후, 연결 리스트:")
print("인덱스가 2인 노드 삭제 후, 연결 리스트 출력:")
ll.deleteNode(2)
ll._printList()
print("값이 3인 노드 삭제 후, 연결 리스트:")
print("값이 3인 노드 삭제 후, 연결 리스트 출력:")
ll.deleteNodeByValue(3)
ll._printList()
print("값이 15인 노드 추가 후, 연결 리스트:")
print("값이 15인 노드 추가 후, 연결 리스트 출력:")
ll._add(15)
ll._printList()
print("모든 노드 모두 삭제 후, 연결 리스트:")
print("모든 노드 모두 삭제 후, 연결 리스트 출력:")
for i in range(ll.length-1, -1, -1):
ll.deleteNode(i)
ll._printList()
6 changes: 3 additions & 3 deletions 9장_정렬/6_merge_sort.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,15 @@ def merge(left, right):
>>> merge(l1, l2)
[1, 2, 2, 3, 4, 4, 5, 5, 6, 7, 8]

나) 제자리 정렬을 구현하는 경우, 다음과 같이 한 배열의 끝에 0이 채워져 있고,
다른 배열에는 첫 배열에서 끝에 0이 채워진 크기만큼의 요소가 있다.
나) 제자리 정렬을 구현하는 경우, 한 배열의 끝에 0이 채워져 있고,
다른 배열에는 첫 배열에서 끝에 0이 채워진 크기만큼의 요소가 있다.
(각 두 배열은 정렬되어 있다.)
>>> l1 = [1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0]
>>> l2 = [2, 4, 5, 8]
>>> merge_two_arrays_inplace(l1, l2)
[1, 2, 2, 3, 4, 4, 5, 5, 6, 7, 8]

다) 정렬된 파일을 다음과 같이 병합할 수 있다(파일을 로딩할 수 있는 충분한 RAM이 있어야 한다).
다) 정렬된 파일은 다음과 같이 병합(파일을 로딩할 충분한 RAM이 필요).
>>> list_files = ["1.dat", "2.dat", "3.dat"]
>>> merge_files(list_files)
[1, 1, 2, 3, 3, 3, 4, 5, 5, 5, 6, 7, 8]
Expand Down
2 changes: 1 addition & 1 deletion 9장_정렬/7_quick_sort.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def quick_sort_cache_devided(seq):

def partition(seq, start, end):
"""
3) 두 함수로 나누어서 구현한다(캐시 사용 안함)
3) 두 함수로 나누어서 구현한다(캐시 사용 안 함).
"""
pivot = seq[start]
left = start + 1
Expand Down
2 changes: 1 addition & 1 deletion 9장_정렬/8_find_k_largest_seq_quicksort.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ def find_k_largest_seq_quickselect(seq, k):
# k번째로 큰 값을 찾는다.
kth_largest = quick_select(seq, k)

# k번째 보다 큰 값을 저장한다.
# k번째보다 큰 값을 저장한다.
result = []
for item in seq:
if item >= kth_largest:
Expand Down