ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자료구조...71
    일지 2021. 3. 25. 19:20

    이진 탐색 트리 삭제, 기능 메서드 구현

     

    BinarySearchTree.cpp

    /// <summary>
    /// BinarySearchTree의 모든 노드를 제거한다.
    /// </summary>
    void BinarySearchTree::Clear()
    {
    	while (m_root != nullptr)
    	{
    		Delete(m_root->m_data);
    	}
    }
    
    /// <summary>
    /// BinarySearchTree에 지정된 값이 존재하는지 검색한다.
    /// </summary>
    /// <param name="value">검색할 값</param>
    bool BinarySearchTree::Search(int value)
    {
    	if (m_root == nullptr)
    	{
    		return false;
    	}
    
    	Node* target{ m_root };
    	while (target != nullptr)
    	{
    		if (target->m_data == value)
    		{
    			break;
    		}
    
    		if (target->m_data > value)
    		{
    			target = target->m_left;
    		}
    		else
    		{
    			target = target->m_right;
    		}
    	}
    
    	return target != nullptr;
    }

     

    main.cpp

    #include <iostream>
    #include "BinarySearchTree/BinarySearchTree.h"
    
    // 생성한 자료구조 테스트용 메인
    int main()
    {
    	BinarySearchTree bst;
    
    	bst.Insert(5);
    
    	bst.Insert(3);
    
    	bst.Insert(1);
    
    	bst.Insert(0);
    
    	bst.Insert(4);
    
    	bst.Insert(8);
    
    	bst.Insert(7);
    
    	bst.Insert(9);
    	bst.PrintInfo();
    
    	bst.Delete(5);
    	bst.PrintInfo();
    
    	std::cout << std::boolalpha << bst.Search(5) << '\n';
    	std::cout << std::boolalpha << bst.Search(9) << '\n';
    
    	bst.Clear();
    	bst.PrintInfo();
    }

     

    실행 결과

    ----------------------
    └  5
      └  3
        └  1
          └  0
        └  4
      └  8
        └  7
        └  9
    ----------------------
    
    ----------------------
    └  4
      └  3
        └  1
          └  0
      └  8
        └  7
        └  9
    ----------------------
    
    false
    true
    ----------------------
    ----------------------

    댓글

Designed by Tistory.