본문 바로가기

분류 전체보기142

[Trees]24. Binary Trees(이진 트리) 목차 1. Binary Trees(이진 트리) 2. Arithmetic Expression Tree 3. Decision Tree 4. 이진 트리의 종류 1. Binary Trees(이진 트리) Binary tree(이진 트리)는 다음과 같은 특징들을 따르는 tree를 말합니다. 1) 각각의 internal node는 최대 두개의 children을 지닌다(proper binary tree를 위해서는 정확히 2개) 2) node의 children은 ordered pair이다. 따라서 root 한개만 보유하고 있는 tree, 혹은 하나의 root와 root의 자식 2개로 이루어져 있는 tree도 binary tree의 일종이라고 할 수 있습니다. 2. Arithmetic Expression Tree 일반적인.. 2021. 2. 25.
[Trees]23. Tree Traversal(트리 순회) 구현 목차 1. class Node, class Tree 2. def pre_order, def post_order 3. main 4. 예상 출력 1. class Node, class Tree class Node, class Tree는 전 게시물 21번에 구현한 것을 사용합니다. imgzon.tistory.com/62 [Trees]21. Tree 구현 목차 1. class Node 2. class Tree 3. def insert_node 4. def del_node 5. def print_chi 6. def print_sib 7. __main__ 8. 예상 입력, 출력 1. class Node class Node: def __init__(self, e: object): self.ele.. imgzon.tis.. 2021. 2. 25.
21. python에서 줄바꿈 없는 print 사용하기 python의 print함수는 줄바꿈이 default값으로 지정되어 있습니다. 하지만, 코드를 작성하다 보면 줄바꿈이 필요없는 경우가 생길 수 있습니다. 줄을 추가로 바꾸기 위해서는 '\n'이 필요하지만, 기본적인 줄바꿈을 없에기 위해서는 추가적인 방법이 필요합니다. 1. python print의 default 값 print('Hello world', end='\n') 기존 python print의 default값은 다음과 같습니다. print 함수를 마칠 때 뒤에 '\n'이 기본적으로 붙는 구조입니다. 2. 줄바꿈 없는 print print('Hello world', end='') 따라서 줄바꿈 없는 print를 사용하려면, end 자리에 빈칸을 삽입하면 됩니다. 만일에 print이후에 공백, 혹은 다.. 2021. 2. 25.
[Trees]22. Tree Traversal(트리 순회 모음) 목차 1. Recursion(재귀) 1. Preorder Traversal(전위 순회) 2. Postorder Traversal(후위 순회) 1. Recursion(재귀) Recursion(재귀)는 자신을 정의할 때, 자기 자신(함수)를 재참조하는 방법을 말합니다. 재귀 함수는 함수를 정의할 때 자기 자신이 포함되며, 따라서 재귀 함수 설계시, 무한 루프에 빠지지 않도록 주의가 필요합니다. 2. Preorder Traversal(전위 순회) Node들의 관계로 이루어져 있는 Tree를 탐색하기 위해서는, 트리의 node들을 체계적인 방법으로 방문해야 합니다. 그 중에서 자신을 우선 방문하고, 자식 node들을 순차적으로 방문하는 방식을 Preorder Traversal(전위 순회)라고 합니다. 3. Po.. 2021. 2. 25.
[Trees]21. Tree 구현 목차 1. class Node 2. class Tree 3. def insert_node 4. def del_node 5. def print_chi 6. def print_sib 7. __main__ 8. 예상 입력, 출력 1. class Node class Node: def __init__(self, e: object): self.element = e self.parent = None self.child = [] def insert_child(self, n): # 해당 node에 자식을 삽입할 때 사용하는 함수 self.child.append(n) def del_child(self, n): # 현재 node의 자식 node 중 특정 node를 제거 for i in self.child: if i==n: .. 2021. 2. 25.
[Trees]20. Tree 목차 1. Tree(트리) 2. Tree Terminology 3. Tree ADT 1. Tree(트리) Tree(트리)는 hierachical structure(계층 구조)를 지닌 추상 모델입니다. Tree는 각각 element를 지닌 node들을 parent-child relation(부모-자식 관계)로 묶어서 분류한다는 점을 특징으로 삼을 수 있습니다. 2. Tree Terminology Tree를 구성하는 요소들은 다음과 같습니다. 1) Root: - parent를 가지지 않는 node이다. - (A) 2) Internal node: - 최소한 하나의 children를 지닌 node이다. - (A, B, C, F) 3) External node(leaf): - children를 지니고 있지 않는 .. 2021. 2. 21.
[Vector/List]19. Double Linked List 구현 목차 1. class Node 2. class D_linked_list 3. insert() 4. erase 5. 테스트 1. class Node class Node: def __init__(self, e: object): self.element = e # node가 저장하는 element self.front = None # 앞에 있는 node의 주소 저장 self.back = None # 뒤에 있는 node의 주소 저장 2. class D_linked_list class D_linked_list: def __init__(self): self.head = Node('head') # head역할을 하는 node 지정 self.tail = Node('tail') # tail역할을 하는 node 지정 def .. 2021. 2. 21.
[Vector/List]18. Position ADT, List ADT 목차 1. Position ADT 2. List ADT 3. Doubly Linked List 4. Performance 1. Position ADT Position ADT(위치)은 특정 data 구조가 저장되어있는 위치를 알아내는 ADT입니다. 이는 특정 array의 cell, 혹은 linked list의 node의 주소를 알고싶을 때, 주로 사용됩니다. 주요 기능은 p.element()입니다. 2. List ADT List ADT는 임의의 데이터를 저장하는 ADT입니다. 1) 특징 - List ADT는 2가지 특징을 지니고 있다. - element의 위치를 지정해야 함 - 특정 위치의 앞과 뒤의 element에 access할 수 있어야 함 2) 기능들 - size(): list의 크기를 반환한다. -.. 2021. 2. 21.