Published:
Updated:


Solution

# Definition for a binary tree node.
class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right


class Solution:
    val = 0

    def bstToGst(self, root: TreeNode) -> TreeNode:
        if root:
            self.bstToGst(root.right)

            # self.val: ์ง€๊ธˆ๊นŒ์ง€ ๋ˆ„์ ๋œ ๊ฐ’
            # root.val: ํ˜„์žฌ ๋…ธ๋“œ์˜ ๊ฐ’
            # ์ฆ‰, inorder ๋ฐฉ์‹์œผ๋กœ ํ˜„์žฌ ๋…ธ๋“œ์˜ ๊ฐ’์„ ์ž๊ธฐ ์ž์‹ ์„ ํฌํ•จํ•œ ์ง€๊ธˆ๊นŒ์ง€์˜ ๋ˆ„์ ๋œ ๊ฐ’๊ณผ ํ•ฉ์นจ

            # self.val์— ํ˜„์žฌ ๋…ธ๋“œ์˜ ๊ฐ’ root.val์„ ๋”ํ•จ -> ํ˜„์žฌ ๋…ธ๋“œ์˜ ๊ฐ’์„ ์ด์ „์— ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ๋“ค์˜ ํ•ฉ๊ณผ ๋”ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ
            # root.val์„ self.val๋กœ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ํ˜„์žฌ ๋…ธ๋“œ์˜ ๊ฐ’์„ ๋ˆ„์ ๋œ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ
            self.val += root.val
            root.val = self.val

            self.bstToGst(root.left)

        return root

Leave a comment