mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-07-06 18:49:26 +08:00
Pyupgrade to Python 3.9 (#4718)
* Pyupgrade to Python 3.9 * updating DIRECTORY.md Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
This commit is contained in:
@ -7,21 +7,23 @@ python -m unittest binary_search_tree_recursive.py
|
||||
To run an example:
|
||||
python binary_search_tree_recursive.py
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
from typing import Iterator, Optional
|
||||
from typing import Iterator
|
||||
|
||||
|
||||
class Node:
|
||||
def __init__(self, label: int, parent: Optional["Node"]) -> None:
|
||||
def __init__(self, label: int, parent: Node | None) -> None:
|
||||
self.label = label
|
||||
self.parent = parent
|
||||
self.left: Optional[Node] = None
|
||||
self.right: Optional[Node] = None
|
||||
self.left: Node | None = None
|
||||
self.right: Node | None = None
|
||||
|
||||
|
||||
class BinarySearchTree:
|
||||
def __init__(self) -> None:
|
||||
self.root: Optional[Node] = None
|
||||
self.root: Node | None = None
|
||||
|
||||
def empty(self) -> None:
|
||||
"""
|
||||
@ -66,9 +68,7 @@ class BinarySearchTree:
|
||||
"""
|
||||
self.root = self._put(self.root, label)
|
||||
|
||||
def _put(
|
||||
self, node: Optional[Node], label: int, parent: Optional[Node] = None
|
||||
) -> Node:
|
||||
def _put(self, node: Node | None, label: int, parent: Node | None = None) -> Node:
|
||||
if node is None:
|
||||
node = Node(label, parent)
|
||||
else:
|
||||
@ -98,7 +98,7 @@ class BinarySearchTree:
|
||||
"""
|
||||
return self._search(self.root, label)
|
||||
|
||||
def _search(self, node: Optional[Node], label: int) -> Node:
|
||||
def _search(self, node: Node | None, label: int) -> Node:
|
||||
if node is None:
|
||||
raise Exception(f"Node with label {label} does not exist")
|
||||
else:
|
||||
@ -140,7 +140,7 @@ class BinarySearchTree:
|
||||
else:
|
||||
self._reassign_nodes(node, None)
|
||||
|
||||
def _reassign_nodes(self, node: Node, new_children: Optional[Node]) -> None:
|
||||
def _reassign_nodes(self, node: Node, new_children: Node | None) -> None:
|
||||
if new_children:
|
||||
new_children.parent = node.parent
|
||||
|
||||
@ -244,7 +244,7 @@ class BinarySearchTree:
|
||||
"""
|
||||
return self._inorder_traversal(self.root)
|
||||
|
||||
def _inorder_traversal(self, node: Optional[Node]) -> Iterator[Node]:
|
||||
def _inorder_traversal(self, node: Node | None) -> Iterator[Node]:
|
||||
if node is not None:
|
||||
yield from self._inorder_traversal(node.left)
|
||||
yield node
|
||||
@ -266,7 +266,7 @@ class BinarySearchTree:
|
||||
"""
|
||||
return self._preorder_traversal(self.root)
|
||||
|
||||
def _preorder_traversal(self, node: Optional[Node]) -> Iterator[Node]:
|
||||
def _preorder_traversal(self, node: Node | None) -> Iterator[Node]:
|
||||
if node is not None:
|
||||
yield node
|
||||
yield from self._preorder_traversal(node.left)
|
||||
|
Reference in New Issue
Block a user