반응형
== Binary_Search_Tree(이진트리) ==
- 매우 중요하다!!
- Search, Delete, Insert : O(log n) - performance 좋다!!
- 구현에 있으서 DP나 Recursion등을 물어볼 수 있기 때문에 이해하고 있어야 한다!!
- Binary Search Tree
- The left sub-tree of a node has a key less than or equal to its parent node's key. - The right sub-tree of a node has a key greater than or equal to its parent node's key. |
- Node
- node들이 연결된 것이 tree 이다!!
- Add
- Search
- Remove(1/3) - node to be removed has no child
- 그냥 지우면 된다.
- Remove(2/3) - node to be removed has one child
- 지우고 자식을 할아버지 node에 연결시켜 주면 된다.
- Remove(3/3) - node to be removed has two child
- 지우고 오른쪽 자식노드의 맨 왼쪽의 값으로 대체시켜 주면 된다.
-- Pre Order Traverse
1) Visit the root
2) Traverse the left subtree
3) Traverse the right subtree
- 왜 Preorder를 사용해야 하는지? 언제써야 하는지?
- 서버 여러개 놓고 사용을 할 때가 있지, 한 서버의 이 tree 구조를 다르 서버에 그대로 보내고 싶을 때, Preorder를 사용하게 된다.
- 즉, 트리를 모양 그대로 다른 서버에 전송하고 싶을 때 byte stream으로 전송하고 싶을 때 preorder를 사용하게 된다.
-- In Order Traverse
1) Visit left
2) Visit parent
3) Visit right
- Inorder를 언제 쓰느냐?!
- 이 트리를 정렬해 보세요 할 때는, In order traverse를 활용하면 O(n)의 시간복잡도를 가지고, 정렬 할 수 있다!!
-- Post Order Traverse
1) Visit left
2) Visit right
3) Visit root
source-code : The-G
reference : 상상개발자
반응형
'Algorithm' 카테고리의 다른 글
DFS(Depth First Search) / DFS to find cycle in graph (0) | 2017.10.04 |
---|---|
자료구조 Graph (0) | 2017.10.04 |
자료구조 Heap / Heap_Sort (0) | 2017.10.03 |
자료구조 Linked_list (0) | 2017.10.03 |
자료구조 Queue / Stack (0) | 2017.10.03 |