trees.py
def move(self, name: str, direction: str, steps: int) -> \
            Optional[Tuple[int, int]]:
        """ Return the new location of the player named <name> after moving it
        in the given <direction> by <steps> steps.

        if a player with the <name> does not exist in the tree, the method
        fail silently without making any changes to the tree.

        Raise an OutOfBoundsError if this would move the player named
        <name> out of bounds (before moving the player).

        Raise an OutOfBoundsError if moving the player would place the player at
        exactly the same coordinates of another player in the Tree (before
        moving the player).

        Runtime: O(n)

        === precondition ===
        direction in ['N', 'S', 'E', 'W']
        """
        raise NotImplementedError
 Return the new location of the player named <name> after moving it
        in the given <direction> by <steps> steps.

        if a player with the <name> does not exist in the tree, the method
        fail silently without making any changes to the tree.

        Raise an OutOfBoundsError if this would move the player named
        <name> out of bounds (before moving the player).

        Raise an OutOfBoundsError if moving the player would place the player at
        exactly the same coordinates of another player in the Tree (before
        moving the player).

        Runtime: O(n)

        === precondition ===
        direction in ['N', 'S', 'E', 'W']
        
Return the new location of the player named  after moving it
in the given  by  steps.

if a player with the  does not exist in the tree, the method
fail silently without making any changes to the tree.

Raise an OutOfBoundsError if this would move the player named
 out of bounds (before moving the player).

Raise an OutOfBoundsError if moving the player would place the player at
exactly the same coordinates of another player in the Tree (before
moving the player).




Return the new location of the player named after moving it in the given by steps . if a player with the does not exist in the tree the method fail silently without making any changes to the tree . Raise an OutOfBoundsError if this would move the player named out of bounds ( before moving the player ) . Raise an OutOfBoundsError if moving the player would place the player at exactly the same coordinates of another player in the Tree ( before moving the player ) .
def move(self, name: str, direction: str, steps: int) -> \
            Optional[Tuple[int, int]]:
        raise NotImplementedError
def move ( self , name : str , direction : str , steps : int ) -> Optional [ Tuple [ int , int ] ] : raise NotImplementedError
Return the new location of the player named <name> after moving it
in the given <direction> by <steps> steps.
Return the new location of the player named <name > after moving it in the given <direction > by <steps > steps .
""" Return the new location of the player named <name> after moving it
        in the given <direction> by <steps> steps.

        if a player with the <name> does not exist in the tree, the method
        fail silently without making any changes to the tree.

        Raise an OutOfBoundsError if this would move the player named
        <name> out of bounds (before moving the player).

        Raise an OutOfBoundsError if moving the player would place the player at
        exactly the same coordinates of another player in the Tree (before
        moving the player).

        Runtime: O(n)

        === precondition ===
        direction in ['N', 'S', 'E', 'W']
        """
self
name
str
direction
str
steps
int