재귀는 말 그대로 재호출 로직을 의미한다.
특징
조건
def sum_list(items):
if len(items) == 1: # Base Case
return items[0]
elif:
return items[0] + sum_list(items[1:]) # 반복적으로 자기자신을 호출한다.
각 노드별로, 최대 2개의 서브노드를 갖는 트리를 이진 트리라 한다.
특징
포화 이진 트리
완전 이진 트리
이진 검색트리
노드를 정확하게 정렬해야하는 이진 트리
노드 탐색을 목적으로 하는 이진 트리이다.
조건
#이진검색트리 삽입 및 검색
class binary_search_tree:
def __init__(self, head):
self.head = head
def insert_node(self, value):
self.base_node = self.head
while True:
if value < self.base_node.value:
if self.base_node.left != None:
self.base_node = self.base_node.left
else:
self.base_node.left = node(value)
break
else:
if self.base_node.right != None:
self.base_node = self.base_node.right
else:
self.base_node.right = node(value)
break
# 노드검색
def search_node(self, value):
self.base_node = self.head
while self.base_node:
if self.base_node.value == value:
return True
if self.base_node.value > value:
self.base_node = self.base_node.left
else:
self.base_node = self.base_node.right
return False