Skip to content

Commit 1e71fbd

Browse files
committed
4. binary tree 설명 추가
1 parent 9529512 commit 1e71fbd

File tree

1 file changed

+13
-0
lines changed
  • construct-binary-tree-from-preorder-and-inorder-traversal

1 file changed

+13
-0
lines changed

construct-binary-tree-from-preorder-and-inorder-traversal/whewchews.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,19 @@ class TreeNode {
99
}
1010
}
1111

12+
/**
13+
* preorder: [root, left, right]
14+
* inorder: [left, root, right]
15+
* preorder의 첫번째 값은 root이다. (1. 현재 root 찾기)
16+
* inorder에서 root의 위치를 찾으면, root를 기준으로 왼쪽은 left subtree, 오른쪽은 right subtree이다. (2. left subtree, right subtree 구분)
17+
* inorder: [...left, root, ...right]
18+
* shift한 preorder에서 첫번째 값은 left subtree의 root이다. (3. left subtree 구성)
19+
* preorder에서 하나씩 shift하면서 왼쪽 트리를 먼저 구성한다.
20+
* preorder에서 첫번째 값이 왼쪽 subtree의 root이다. (1. 현재 root 찾기)
21+
* inorder에서 root의 위치를 찾아서 왼쪽 subtree를 구성한다. (2. left subtree, right subtree 구분) (3. left subtree 구성)
22+
* root 기준 왼쪽 subtree 구성이 끝나면 오른쪽 subtree를 구성한다.
23+
* 위 과정을 재귀적으로 반복하면, 전체 트리를 구성할 수 있다. (1-3 과정 반복)
24+
*/
1225
function buildTree(preorder: number[], inorder: number[]): TreeNode | null {
1326
// build 함수가 각 노드마다 호출됨(N) * 각 노드마다 shift, indexOf 수행(N) = O(N^2)
1427
function build(preorder, inorder) {

0 commit comments

Comments
 (0)