1. 이진탐색트리 정의
   - 각각의 노드는 값을 가지고 있다.
   - 노드의 왼쪽 자식 노드는 자신보다 작은 값을 가진다.
   - 오른쪽 자식 노드는 자신보다 큰 값을 가진다.

 2. 프로그램 스펙
   - 자연수(1, 2, 3, …)를 키(key)로 가지는 이진탐색트리를 구현한다. (키
     와 연관된 원소(associated element)는 없는 것으로 한다.)
     (1) 삽입: 키 값을 키보드로 입력받아 이진탐색트리에 삽입.

     (2) 검색: 키 값을 키보드로부터 입력받아 이진탐색트리에서 검색. 해당 키 값이 이진
     탐색트리에 있으면 그 값을 출력. 그렇지 않으면 0을 출력.

     (3) 파일로부터 읽기: 다음과 같은 형식을 가지는 외부 파일로부터 키 값을 차례대로
     읽으면서 이진탐색트리 작성. (숫자 사이는 ‘\t’으로 구분)
     ex) 2 67 8 35 26 …

     (4) 출력: 이진탐색트리를 중위순회(inorder traversal)하여 키 값들을 출력.

     (5) 종료: 프로그램을 종료.

     (6) 메뉴 구성: 위의 기능을 메인 메뉴로 구성하여, 프로그램 조작이 용이하도록 할
     것.

  3. 클래스 및 함수 설명

     노드 클래스 TreeNode 클래스와 트리를 구성하는 Tree 클래스를 만들어 구현했다.

     TreeNode 클래스에서 Tree 클래스를 friend로 설정하였다.

     (1) TreeNode 클래스

    

private

int num

정수가 저장될 변수

TreeNode* LeftChild;

좌측 자식노드를 가리키는 포인터

TreeNode* RightChild;

우측 자식노드를 가리키는 포인터

public

TreeNode(int,TreeNode*,TreeNode*);

생성자

    (2) Tree 클래스

private

TreeNode* root

Root를 가리키는 TreeNode형 포인터

public

Tree();

생성자

~Tree();

소멸자

void PrintMenu();

메뉴를 출력하는 함수

TreeNode* Insertion(TreeNode*,int);

재귀적으로 노드를 삽입하는 함수

void Insert();

삽입을 총괄하는 함수

TreeNode* SearchNum(TreeNode*,int);

재귀적으로 검색을 하는 함수

void Search();

검색을 총괄하는 함수

void LoadFromFile();

파일로부터 데이터를 읽어노드를 생성

void Inorder(TreeNode*);

Inorder Traversal을 사용하여 출력

void ShowInorder();

출력을 총괄하는 함수


  4. Source Code

      내가 정의한 헤더파일인 header.h,  메인함수를 다루는 main.cpp, 클래스 멤버함수가 정의되어있는 func.cpp 로 구성되어있다. ( 첨부파일 )



  5.  실행결과 캡쳐


      (1) 예외처리.

사용자 삽입 이미지
       (2) 파일 입출력처리

사용자 삽입 이미지

       (3) 검색 처리

사용자 삽입 이미지

   (4) 인풋처리.
사용자 삽입 이미지


 제작환경은 Vista Home premium K 위에서 Visual Studio 2005 Pro.Edition 에서 작업하였고,

 사용한 언어는 C++이다.
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST