본문 바로가기
  • 紹睿: 자유롭고 더불어 사는 가치있는 삶
Data/python·알고리즘

[Binary Tree] 이진트리(2) - pre order, in order, post order

by 징여 2018. 9. 24.
반응형

이진트리의 삽입과 삭제는 [Binary Tree] 이진트리(1)에 있다

오늘은 Pre order, In oder, Post order에 대하여 알아보자!

예전에 정보처리기사와 수업을 들으면서

Pre = PLR

IN = LPR

Post = LRP 

P(parent), L(left), R(right)순이라고 그냥 외웠었다.

class BinaryTree:

    def preorder(self):
        if self.head != None:
            self.__preorder(self.head)

    def __preorder(self, cur):
        self.preorder_list.append(cur.val)
        if cur.left != None:
            self._preorder(cur.left)
        if cur.right != None:
            self._preorder(cur.right)

    def inorder(self):
        if self.head != None:
            self._inorder(self.head)

    def __inorder(self, cur):
        if cur.left != None:
            self.__inorder(cur.left)
        self.inorder_list.append(cur.val)
        if cur.right != None:
            self.__inorder(cur.right)

    def postorder(self):
        if self.head != None:
            self._postorder(self.head)

    def __postorder(self, cur):
        if cur.left != None:
            self.__postorder(cur.left)
        if cur.right != None:
            self.__postorder(cur.right)
        self.postorder_list.append(cur.val)

5, 3, 7, 1, 4를 add해서 넣고 결과값은 아래와 같이 나오면 된거당!

preorder = [5, 3, 1, 4, 7]

inorder = [1, 3, 4, 5, 7]

postorder = [1, 4, 3, 7, 5]

참고: 허민석님 유투브

반응형

댓글