Skip to content

Commit

Permalink
4. binary tree 설명 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
whewchews committed Aug 23, 2024
1 parent 9529512 commit 1e71fbd
Showing 1 changed file with 13 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,19 @@ class TreeNode {
}
}

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

0 comments on commit 1e71fbd

Please sign in to comment.