Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

새싹교실/2017/따라와반/과제방/자료구조/5회차: Difference between revisions

From ZeroWiki
No edit summary
No edit summary
Line 16: Line 16:
= 이민욱 =
= 이민욱 =
== 미로 탐색 ==
== 미로 탐색 ==
#include <stdio.h>
#include <stdlib.h>
   
   
typedef struct __Node{
    char Data;
    struct __Node* Left;
    struct __Node* Right;
} Node;
void SetNode(Node* node, char data);
Node* SearchNode(Node* tree, char data);
void SetLeft(Node* Root, Node* Child);
void SetRight(Node* Root, Node* Child);
void DestroyTree(Node* Root);
void preorder(Node* Root);
void Inorder(Node* Root);
void Postorder(Node* Root);
int main(){
    int i, j;
    int N;
    char Parent, Right, Left;
    Node *tmp, *tmp2;
    Node* Root = (Node*)malloc(sizeof(Node));
    SetNode(Root, 'A');
    scanf("%d", &N);
    for(i=0;i<N;i++){
        scanf(" %c", &Parent);
        tmp = SearchNode(Root, Parent);
        scanf(" %c", &Left);
        if(Left!='.') {
            tmp2=(Node*)malloc(sizeof(Node));
            SetNode(tmp2, Left);
            SetLeft(tmp, tmp2);
        }
        scanf(" %c", &Right);
        if(Right!='.') {
            tmp2=(Node*)malloc(sizeof(Node));
            SetNode(tmp2, Right);
            SetRight(tmp, tmp2);
        }
    }
    preorder(Root);
    printf("\n");
    Inorder(Root);
    printf("\n");
    Postorder(Root);
    printf("\n");
    DestroyTree(Root);
    return 0;
}
void SetNode(Node* node, char data){
    node->Left=NULL;
    node->Right=NULL;
    node->Data = data;
}
Node* SearchNode(Node* tree, char data){
    Node* tmp;
    if(tree==NULL) return NULL;
    if(tree->Data==data) return tree;
    tmp=SearchNode(tree->Left, data);
    if(tmp!=NULL) return tmp;
    tmp=SearchNode(tree->Right, data);
    if(tmp!=NULL) return tmp;
    return NULL;
}
void DestroyTree(Node* Root){
    if(Root==NULL) return;
    free(Root);
    DestroyTree(Root->Left);
    DestroyTree(Root->Right);
}
void SetLeft(Node* Root, Node* Child){
    Root->Left = Child;
}
void SetRight(Node* Root, Node* Child){
    Root->Right = Child;
}
void preorder(Node* Root){
    printf("%c", Root->Data);
    if(Root->Left!=NULL) {
        preorder(Root->Left);
    }
    if(Root->Right!=NULL) {
        preorder(Root->Right);
    }
}
void Inorder(Node* Root) {
    if(Root->Left!=NULL) {
        Inorder(Root->Left);
    }
    printf("%c", Root->Data);
    if(Root->Right!=NULL) {
        Inorder(Root->Right);
    }
}
void Postorder(Node* Root){
    if(Root->Left!=NULL) {
        Postorder(Root->Left);
    }
    if(Root->Right!=NULL) {
        Postorder(Root->Right);
    }
    printf("%c", Root->Data);
}
== 후위표기식 ==
== 후위표기식 ==
  (코드를 여기에)
  (코드를 여기에)

Revision as of 11:40, 21 May 2017

오늘의 실습 내용

신원준

미로 탐색

(코드를 여기에)

후위표기식

(코드를 여기에)

트리 순회

(코드를 여기에)

이민욱

미로 탐색

후위표기식

(코드를 여기에)

트리 순회

(코드를 여기에)

정석우

미로 탐색

(코드를 여기에)

후위표기식

(코드를 여기에)

트리 순회

(코드를 여기에)