フィードバックを送信
検索ツリーテストを生成する
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
バイナリ検索ツリーに対するエッジケースを含む単体テストを作成する
モデルにクエリを直接実行して、返された結果をテストできます。その場合、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
TopK:
40.0
TopP:
0.95
フィードバックを送信
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンス により使用許諾されます。コードサンプルは Apache 2.0 ライセンス により使用許諾されます。詳しくは、Google Developers サイトのポリシー をご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-12-23 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-23 UTC。"],[],[]]