[LeetCode] 1008. Construct Binary Search Tree from Preorder Traversal
Updated:
1008. Construct Binary Search Tree from Preorder Traversal
์ด๋ค ํธ๋ฆฌ๋ฅผ ์ ์์ํ๋ก ๋์์ ๊ฒฝ์ฐ์ ๋ฐฉ๋ฌธ ์์๊ฐ ๋ด๊ธด ๋ฐฐ์ด์ด Input ์ผ๋ก ์ฃผ์ด์ง๋ค.
์ด๋ ์ด Input ๊ฐ์ ๊ฐ์ง๊ณ ์ด์ง ํ์ ํธ๋ฆฌ๋ฅผ ๋ง๋๋ ๋ฌธ์ ์ด๋ค. ์ ๊ตณ์ด ์ ์์ํ๋ก ๋ฐฉ๋ฌธ ํ ์์๋ฅผ ์คฌ๋์ง๋ ์์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค..
๋ฃจํธ๋ ธ๋๋ฅผ ์๊ฒ ํ๊ธฐ ์ํจ์ธ๊ฐ.. ์ด์จ๋ ์ ์์ํ๋ ๋ฃจํธ๋ฅผ ๋จผ์ ๋ฐฉ๋ฌธํ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์์ index ๊ฐ 0 ์ธ ๊ฐ์ ๋ฃจํธ๋ ธ๋๋ก ์ผ์ผ๋ฉด ๋๋ค.
๊ทธ๋ฌ๋๊น ๊ทธ๋ฅ [8, 5, 1, 7, 10, 12] ์์๋ก ์ด์ง ํ์ํธ๋ฆฌ๋ฅผ ๋ง๋ค๋ฉด ์ ๋ต์ด๋ค.
์ ์ ์์ํ๋ก ๋์์ ๊ฒฝ์ฐ๋ฅผ Input ์ผ๋ก ์ฃผ์์๊น.. ๋ด๊ฐ ๋์น ๋ฌด์ธ๊ฐ๊ฐ ์๋.. ์ ์ฝ์กฐ๊ฑด์ด ์๋๊ฑด๊ฐ..
from typing import List
# 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:
def bstFromPreorder(self, preorder: List[int]) -> TreeNode:
root = TreeNode(preorder[0])
def make_BST(root, val):
cur_node = root
while True:
if val < cur_node.val:
if cur_node.left:
cur_node = cur_node.left
else:
cur_node.left = TreeNode(val)
break
else:
if cur_node.right:
cur_node = cur_node.right
else:
cur_node.right = TreeNode(val)
break
for val in preorder[1:]:
make_BST(root, val)
return root
Leave a comment