의견 보내기
검색 트리 테스트 생성
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
바이너리 검색 트리에 대해 특이 사례가 포함된 단위 테스트 만들기
모델을 직접 쿼리하고 Cloud 콘솔에서 다른 매개변수 값을 사용하거나 Vertex AI API를 직접 호출하여 반환된 결과를 테스트할 수 있습니다.
시스템 안내
다양한 일반적인 알고리즘에 능숙한 경험 많은 프로그래머입니다. 이 클래스 구현의 정확성을 보장하기 위해 이진 탐색 트리 구현에 관한 충분히 상세한 단위 테스트를 작성하는 것이 이 작업의 목표입니다. 설명을 제공하지 말고 단위 테스트만 만드세요.
바이너리 검색 트리의 코드 구현이 있지만 올바른지 확실하지 않습니다. 이를 확인하기 위해 이 클래스의 각 함수 (비공개 함수 제외)를 테스트할 수 있는 단위 테스트를 작성해 주세요. 단위 테스트에는 빈 트리에서 작업을 실행하고 중복 값을 처리하는 등의 특이 사례가 포함되어야 합니다. 또한 코드에 main
함수가 포함되어야 합니다.
bst.py
from dataclasses import dataclass
from typing import Optional
@dataclass
class TreeNode :
value : int
left : Optional [ 'TreeNode' ] = None
right : Optional [ 'TreeNode' ] = None
class BST :
def __init__ ( self ):
self . root : Optional [ TreeNode ] = None
def insert ( self , value : int ) - > None :
if not self . root :
self . root = TreeNode ( value )
else :
self . _insert_helper ( self . root , value )
def _insert_helper ( self , node : TreeNode , value : int ) - > None :
if value < node . value :
if node . left is None :
node . left = TreeNode ( value )
else :
self . _insert_helper ( node . left , value )
else :
if node . right is None :
node . right = TreeNode ( value )
else :
self . _insert_helper ( node . right , value )
def find ( self , value : int ) - > Optional [ TreeNode ]:
return self . _find_helper ( self . root , value )
def _find_helper ( self , node : Optional [ TreeNode ], value : int ) - > Optional [ TreeNode ]:
if node is None or node . value == value :
return node
if value < node . value :
return self . _find_helper ( node . left , value )
return self . _find_helper ( node . right , value )
def _lookup_min ( self , node : TreeNode ) - > TreeNode :
current = node
while current . left :
current = current . left
return current
def print_inorder ( self ) - > None :
self . _print_inorder_helper ( self . root )
print ()
def _print_inorder_helper ( self , node : Optional [ TreeNode ]) - > None :
if node :
self . _print_inorder_helper ( node . left )
print ( node . value , end = ' ' )
self . _print_inorder_helper ( node . right )
응답
import unittest
from bst import BST , TreeNode
class TestBST ( unittest . TestCase ):
def test_insert_empty ( self ):
bst = BST ()
bst . insert ( 5 )
self . assertEqual ( bst . root . value , 5 )
def test_insert_multiple ( self ):
bst = BST ()
bst . insert ( 5 )
bst . insert ( 3 )
bst . insert ( 7 )
bst . insert ( 1 )
bst . insert ( 4 )
bst . insert ( 6 )
bst . insert ( 8 )
self . assertEqual ( bst . root . value , 5 )
self . assertEqual ( bst . root . left . value , 3 )
self . assertEqual ( bst . root . right . value , 7 )
def test_insert_duplicates ( self ):
bst = BST ()
bst . insert ( 5 )
bst . insert ( 5 )
self . assertEqual ( bst . root . value , 5 )
self . assertIsNone ( bst . root . left )
self . assertIsNone ( bst . root . right )
def test_find_empty ( self ):
bst = BST ()
self . assertIsNone ( bst . find ( 5 ))
def test_find_present ( self ):
bst = BST ()
bst . insert ( 5 )
bst . insert ( 3 )
bst . insert ( 7 )
self . assertEqual ( bst . find ( 5 ) . value , 5 )
self . assertEqual ( bst . find ( 3 ) . value , 3 )
self . assertEqual ( bst . find ( 7 ) . value , 7 )
def test_find_absent ( self ):
bst = BST ()
bst . insert ( 5 )
bst . insert ( 3 )
bst . insert ( 7 )
self . assertIsNone ( bst . find ( 1 ))
self . assertIsNone ( bst . find ( 9 ))
def test_find_duplicates ( self ):
bst = BST ()
bst . insert ( 5 )
bst . insert ( 5 )
self . assertEqual ( bst . find ( 5 ) . value , 5 )
def test_print_inorder_empty ( self ):
bst = BST ()
bst . print_inorder ()
def test_print_inorder_non_empty ( self ):
bst = BST ()
bst . insert ( 5 )
bst . insert ( 3 )
bst . insert ( 7 )
bst . insert ( 1 )
bst . insert ( 4 )
bst . insert ( 6 )
bst . insert ( 8 )
bst . print_inorder ()
if __name__ == '__main__' :
unittest . main ()
모델:
gemini-1.5-flash-002
강도:
0.2
최대 출력 토큰:
8192
최상위 K:
40.0
최상위 P:
0.95
의견 보내기
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스 에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스 에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책 을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2024-12-05(UTC)
의견을 전달하고 싶나요?
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["번역 문제","translationIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2024-12-05(UTC)"],[],[]]