from typing import TypeVar, Generic T = TypeVar( 'T' ) class Tree( Generic[ T ] ): def __init__( self, key ) -> None: self.left : Optional[ Tree ] = None self.right : Optional[ Tree ] = None self.key = key async def search( self, key, suspend ) -> bool: await suspend( self.key ) r = False if key == self.key: r = True if key < self.key and self.left is not None: r = await self.left.search( key, suspend ) if key > self.key and self.right is not None: r = await self.right.search( key, suspend ) return r