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