|
1 | 1 | """ |
2 | 2 | Constraints: |
3 | | - 1. 1 <= preorder.length <= 3000 |
4 | | - 2. inorder.length == preorder.length |
5 | | - 3. -3000 <= preorder[i], inorder[i] <= 3000 |
6 | | - 4. preorder and inorder consist of unique values |
7 | | - 5. Each value of inorder also appears in preorder |
8 | | - 6. preorder is guaranteed to be the preorder traversal of the tree |
9 | | - 7. inorder is guaranteed to be the inorder traversal of the tree |
| 3 | +1. 1 <= preorder.length <= 3000 |
| 4 | +2. inorder.length == preorder.length |
| 5 | +3. -3000 <= preorder[i], inorder[i] <= 3000 |
| 6 | +4. preorder and inorder consist of unique values |
| 7 | +5. Each value of inorder also appears in preorder |
| 8 | +6. preorder is guaranteed to be the preorder traversal of the tree |
| 9 | +7. inorder is guaranteed to be the inorder traversal of the tree |
10 | 10 | |
11 | | -Time Complexity: |
12 | | - - O(N^2). ๊ฐ ๋
ธ๋(N)๋ง๋ค inorder์์ index๋ฅผ ์ฐพ๋ ์ฐ์ฐ(N)์ด ํ์ํ๊ณ , ๊ฐ ๋
ธ๋๋ฅผ ํ ๋ฒ์ฉ ๋ฐฉ๋ฌธํ์ฌ ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ๋๋ฌธ. |
13 | | -Space Complexity: |
14 | | - - O(N). ์ฌ๊ท ํธ์ถ ์คํ์ ์ํ ๊ณต๊ฐ์ด ํ์ํ๋ฉฐ, ์ต์
์ ๊ฒฝ์ฐ(ํ์ชฝ์ผ๋ก ์น์ฐ์น ํธ๋ฆฌ) ์ฌ๊ท ๊น์ด๊ฐ N๊น์ง ๊ฐ ์ ์๊ธฐ ๋๋ฌธ. |
15 | | -""" |
| 11 | +Time Complexity: O(N^2) |
| 12 | +- ๊ฐ ๋
ธ๋(N)๋ง๋ค inorder์์ index๋ฅผ ์ฐพ๋ ์ฐ์ฐ(N)์ด ํ์ํ๊ณ , ๊ฐ ๋
ธ๋๋ฅผ ํ ๋ฒ์ฉ ๋ฐฉ๋ฌธํ์ฌ ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ๋๋ฌธ. |
| 13 | +Space Complexity: O(N) |
| 14 | +- ์ฌ๊ท ํธ์ถ ์คํ์ ์ํ ๊ณต๊ฐ์ด ํ์ํ๋ฉฐ, ์ต์
์ ๊ฒฝ์ฐ(ํ์ชฝ์ผ๋ก ์น์ฐ์น ํธ๋ฆฌ) ์ฌ๊ท ๊น์ด๊ฐ N๊น์ง ๊ฐ ์ ์๊ธฐ ๋๋ฌธ. |
| 15 | +
|
| 16 | +์์ด๋์ด: |
| 17 | +- preorder: ๋ฃจํธ์ ์์น๋ฅผ ์๋ ค์ค |
| 18 | +- inorder: ์ผ์ชฝ/์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ๋ฅผ ๊ตฌ๋ถํด์ค |
16 | 19 |
|
| 20 | +ํ์ด๋ฐฉ๋ฒ: |
| 21 | +1. ๋น ๋ฐฐ์ด์ผ ๋ None ๋ฐํ |
| 22 | +2. root, mid ๋ณ์ ์์ฑ (mid - ์ผ์ชฝ/์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ ๊ฒฝ๊ณ) |
| 23 | +3. ์ฌ๊ท๋ฅผ ํ์ฉํ์ฌ ์๋ธํธ๋ฆฌ ๋ถํ |
| 24 | +
|
| 25 | +์์: |
| 26 | +- Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] |
| 27 | +""" |
| 28 | +# Definition for a binary tree node. |
| 29 | +# class TreeNode: |
| 30 | +# def __init__(self, val=0, left=None, right=None): |
| 31 | +# self.val = val |
| 32 | +# self.left = left |
| 33 | +# self.right = right |
17 | 34 | class Solution: |
18 | 35 | def buildTree(self, preorder: List[int], inorder: List[int]) -> Optional[TreeNode]: |
19 | 36 | if not preorder or not inorder: |
|
0 commit comments