File tree Expand file tree Collapse file tree 1 file changed +29
-0
lines changed
construct-binary-tree-from-preorder-and-inorder-traversal Expand file tree Collapse file tree 1 file changed +29
-0
lines changed Original file line number Diff line number Diff line change 1+ # Definition for a binary tree node.
2+ # class TreeNode:
3+ # def __init__(self, val=0, left=None, right=None):
4+ # self.val = val
5+ # self.left = left
6+ # self.right = right
7+
8+ """
9+ 1) preorder 의 경우 젤 첫번째 노드가 최상단 노드라는 보장이 있음
10+ 2) inorder 의 경우 preorder 에서의 첫번째 node 를 기준으로 왼쪽이 left 노드, 오른찍이 right 노드라는 보장이 있음
11+ 3) preorder 에서 left, right의 갯수는 inorder에서 찾은 root node 의 인덱스 를 활용할 수 있음
12+
13+ Time: O(n^2)
14+ Space: O(n^2)
15+ """
16+
17+
18+ class Solution :
19+ def buildTree (self , preorder : List [int ], inorder : List [int ]) -> Optional [TreeNode ]:
20+ if not preorder or not inorder :
21+ return None
22+
23+ newNode = TreeNode ()
24+ newNode .val = preorder [0 ]
25+ mid = inorder .index (preorder [0 ])
26+ newNode .left = self .buildTree (preorder [1 : mid + 1 ], inorder [:mid ])
27+ newNode .right = self .buildTree (preorder [mid + 1 :], inorder [mid + 1 :])
28+
29+ return newNode
You can’t perform that action at this time.
0 commit comments