오류에 대한 지적이나 질문, 토의 환영합니다. 자유롭게 댓글 남겨주세요!.!
size()
: 현재 트리에 포함되어 있는 노드의 수를 구합니다.depth()
: 현재 트리의 깊이(또는 높이; height)를 구합니다.traversal()
: 현재 트리의 모든 노드를 방문합니다.class Node:
def __init__(self, item):
self.data = item
self.left = None
self.right = None
class BinaryTree:
def __init__(self, r):
self.root = r
BinaryTree.size()
에서는 Node.size()
를 호출하고, Node.size()
에서는 재귀적인 호출이 일어납니다.# Node.size()
def size(self):
l = self.left.size() if self.left else 0
r = self.right.size() if self.right else 0
return l + r + 1
# BinaryTree.size()
def size(self):
if self.root:
return self.root.size()
else:
return 0
BinaryTree.depth()
에서는 Node.depth()
를 호출하고, Node.depth()
에서는 재귀적인 호출이 일어납니다.# Node.depth()
def depth(self):
l = self.left.depth() if self.left else 0
r = self.right.depth() if self.right else 0
return max(l, r) + 1
# BinaryTree.depth()
def depth(self):
if self.root:
return self.root.depth()
else:
return 0
BinaryTree
Class에서는 Node
Class의 순회를 호출하고, Node
Class에서는 재귀적인 호출이 일어납니다.### Node Class의 순회
def inorder(self):
traversal = []
if self.left:
traversal += self.left.inorder()
traversal.append(self.data)
if self.right:
traversal += self.right.inorder()
return traversal
def preorder(self):
traversal = []
traversal.append(self.data)
if self.left:
traversal += self.left.preorder()
if self.right:
traversal += self.right.preorder()
return traversal
def postorder(self):
traversal = []
if self.left:
traversal += self.left.postorder()
if self.right:
traversal += self.right.postorder()
traversal.append(self.data)
return traversal
### BinaryTree Class의 순회
def inorder(self):
if self.root:
return self.root.inorder()
else:
return []
def preorder(self):
if self.root:
return self.root.preorder()
else:
return []
def postorder(self):
if self.root:
return self.root.postorder()
else:
return []
import ArrayQueue
def bft(self):
traversal = []
que = ArrayQueue()
if self.root:
que.enqueue(self.root)
while not que.isEmpty():
node = que.dequeue()
traversal.append(node.data)
if node.left:
que.enqueue(node.left)
if node.right:
que.enqueue(node.right)
return traversal
이 글은 프로그래머스 스쿨 인공지능 데브코스 과정에서 공부한 내용을 바탕으로 정리한 글입니다.