Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- rhcsa
- 도커
- 스프링
- 자바
- Spring
- storage
- 스토리지
- hadoop
- 빅데이터
- 재귀
- 리눅스
- algorithm
- AWS
- Redshift
- sort
- big data
- 알고리즘
- docker
- Data Structure
- 하둡
- data
- 설치
- redhat
- 아마존
- Amazon
- linux
- 자료구조
- recursive
- java
- 레드햇
Archives
- Today
- Total
Developer MJ
[C/C++] DFS/BFS 구현 본문
DFS(깊이 우선탐색)
- preorder
- inorder
- postorder
BFS(너비 우선탐색)
struct Node{
int data;
Node* left;
Node* right;
};
Node* insert(Node* root ,int data){
if(root == nullptr)
{
root = new Node();
root->data = data;
root->left = root->right = nullptr;
}
else if( data <= root->data)
{
root->left = insert(root->left, data);
}
else
{
root->right = insert(root->right, data);
}
return root;
}
void dfs_pre(Node* root)
{
if(root == nullptr)
{
return;
}
Node* c = root;
printf("%d ",c->data);
dfs_pre(root->left);
dfs_pre(root->right);
}
void dfs_post(Node* root)
{
if(root == nullptr)
{
return;
}
Node* c = root;
dfs_post(root->left);
dfs_post(root->right);
printf("%d ",c->data);
}
void dfs_in(Node* root)
{
if(root == nullptr)
{
return;
}
Node* c = root;
dfs_in(root->left);
printf("%d ",c->data);
dfs_in(root->right);
}
Node* Q[50];
int front,tail;
void push(Node* c)
{
Q[tail++] = c;
}
void pop()
{
front++;
}
bool isEmpty()
{
return front == tail ? true : false;
}
Node* getFront()
{
return Q[front];
}
void bfs(Node* root)
{
front = tail = 0;
if(root == nullptr)
{
return;
}
push(root);
while(!isEmpty())
{
Node* c = getFront();
printf("%d ",c->data);
if(c->left != nullptr) push(c->left);
if(c->right != nullptr)push(c->right);
pop();
}
}
Node* root;
int main(int argc, const char * argv[]) {
root = nullptr;
root = insert(root, 15);
root = insert(root, 20);
root = insert(root, 4);
root = insert(root, 3);
root = insert(root, 5);
root = insert(root, 29);
printf("preorder\n");
dfs_pre(root);
printf("\n");
printf("postorder\n");
dfs_post(root);
printf("\n");
printf("inorder\n");
dfs_in(root);
printf("\n");
printf("bfs\n");
bfs(root);
printf("\n");
return 0;
}
'Programming > Code' 카테고리의 다른 글
[Java] Priority Queue (우선순위 큐) 구현 (0) | 2020.12.20 |
---|---|
[Java] Double Linked List 구현 (0) | 2020.12.19 |
[C/C++] Binary Search Tree 구현 (0) | 2019.04.24 |
[Java] 퀵정렬 (Quick Sort) (0) | 2019.04.18 |
[Java] 계수정렬(Counting Sort) (0) | 2019.04.18 |