Programming/leetcode

538. Convert BST to Greater Tree

홍열 2021. 2. 11. 18:52
728x90

영어 해석이 안되면, 그림 해석을 잘해야되는데, 아직은 그렇지 못한것 같다. 

그래프를 돌면서 값을 더해주면 되는 문제였는데, 왜 어제는 안보였는지 모르겠다. 

 

BST는 자식 - 부모 순으로 순회를 하는 것이다.

이진탐색트리는  전위, 중위, 후위 순회 방법이 있다. 

 

전위 순회(Preorder Traversal): 부모 → 좌 → 우
중위 순회(Inorder Traversal): 좌 → 부모 → 우
후위 순회(Postorder Traversal): 좌 → 우 → 부모

 

문제에서는 우->부모->좌로 순회를 한다. 중위 순회의 변형이라 볼수 있겠다. 

 

오른쪽 자식이 없을때 까지 내려간 다음, val을 우->부모->좌 순서로 더해서 올라오면 된다. 

 

    def __init__(self):
        self.sum = 0
    def convertBST(self, root: TreeNode) -> TreeNode:
        if root:
            self.convertBST(root.right)
            self.sum += root.val
            root.val = self.sum
            self.convertBST(root.left)
        return root