[LeetCode] 1305. All Elements in Two Binary Search Trees
Updated:
1305. All Elements in Two Binary Search Trees
์ด์ง ํ์ ํธ๋ฆฌ ๋ ๊ฐ๋ฅผ ์ํํด์ ์ ๋ ฌ ๋ ๊ฐ๊ฐ์ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ ๋ค ๋ ๋ฆฌ์คํธ๋ฅผ ์ค๋ฆ์ฐจ์ ํํ๋ก ํฉ์น๋ฉด ๋๋ ๋ฌธ์ ์ด๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์์ฃผ ๋ค์ํ๋ค.
ํธ๋ฆฌ๋ฅผ ์๋ฌด๋ ๊ฒ๋ ์ํ ํด์ ์ป์ ๋ฆฌ์คํธ๋ฅผ ํฉ์น ๋ค ์ ๋ ฌ์ ํด๋ ๋๊ณ ..
ํธ๋ฆฌ๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ํํด์ ์ป์ ๋ฆฌ์คํธ๋ฅผ ํฉ์น ๋ค ์ ๋ ฌ์ ํด๋ ๋๊ณ ..
ํธ๋ฆฌ๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ํํด์ ์ป์ ๋ฆฌ์คํธ๋ฅผ ํฌ ํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํฉ์ณ๋ ๋๋ค..
๋ฌผ๋ก ์๋ฌด๋ ๊ฒ๋ ์ํํด์ ์ป์ ๋ฆฌ์คํธ๋ฅผ ํฉ์น ๋ค ์ ๋ ฌ์ ํ๋๊ฒ ๊ฐ์ฅ ์ฝ๋ค.
๊ทธ๋๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํธ๋๊ฑฐ๋๊น.. ํธ๋ฆฌ๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ํํด์ ์ป์ ๋ฆฌ์คํธ๋ฅผ ํฌ ํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํฉ์น๋ ๋ฐฉํฅ์ผ๋ก ํ์๋ค.
์ด์ง ํ์ ํธ๋ฆฌ๋ ์ค์์ํ๋ฅผ ํ ๊ฒฝ์ฐ ์ ๋ ฌ ๋ ์์๋ฅผ ์ป์ ์ ์๋ค !
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 make_sort_list(self, root):
_list = []
def in_order(root):
if not root:
return
else:
in_order(root.left)
_list.append(root.val)
in_order(root.right)
in_order(root)
return _list
def getAllElements(self, root1: TreeNode, root2: TreeNode) -> List[int]:
a = self.make_sort_list(root1)
b = self.make_sort_list(root2)
merge = []
a_idx, b_idx = 0, 0
while a_idx < len(a) and b_idx < len(b):
if a[a_idx] >= b[b_idx]:
merge.append(b[b_idx])
b_idx += 1
else:
merge.append(a[a_idx])
a_idx += 1
while a_idx < len(a):
merge.append(a[a_idx])
a_idx += 1
while b_idx < len(b):
merge.append(b[b_idx])
b_idx += 1
return merge
Leave a comment