# 이진 트리는 노드로 구성
# 깊이 우선 순회 알고리즘을 적용하여 재귀를 활용
classNode:def__init__(self,item):self.data=itemself.left=Noneself.right=Nonedefsize(self):l=self.left.size()ifself.leftelse0r=self.right.size()ifself.rightelse0returnl+r+1defdepth(self):l=self.left.depth()ifself.leftelse0r=self.right.depth()ifself.rightelse0returnmax(l,r)+1definorder(self):traversal=[]ifself.left:traversal+=self.left.inorder()traversal.append(self.data)ifself.right:traversal+=self.right.inorder()returntraversaldefpreorder(self):traversal=[]traversal.append(self.data)ifself.left:traversal+=self.left.preorderifself.right:traversal+=self.right.preorderreturntraversaldefpostorder(self):traversal=[]ifself.left:traversal+=self.left.postorder()ifself.right:traversal+=self.right.postorder()traversal+=self.datareturntraversalclassBinaryTree:def__init__(self,r):self.root=rdefsize(self):ifself.root:returnself.root.size()else:return0defdepth(self):ifself.root:returnself.root.depth()else:return0# 이진 트리의 중위 순회
definorder(self):ifself.root:returnself.root.inorder()else:return[]# 이진 트리의 전위 순회
defpreorder(self):ifself.root:returnself.root.preorder()else:return[]# 이진 트리의 후위 순회
defpostorder(self):ifself.root:returnself.root.postorder()else:return[]
오류난 부분
Node 클래스의 size() 메소드에서 종료 조건에서의 값이 0이 주어져서 return 값이 0이 되는게 아닌가하는 생각이 들었지만 기존의 root를 더해줌으로써 의문이 풀렸다. 그리고 self.left, self.right 모두 노드라는 것이 중요했다.