data_structures.binary_tree.avl_tree ==================================== .. py:module:: data_structures.binary_tree.avl_tree .. autoapi-nested-parse:: Implementation of an auto-balanced binary tree! For doctests run following command: python3 -m doctest -v avl_tree.py For testing run: python avl_tree.py Attributes ---------- .. autoapisummary:: data_structures.binary_tree.avl_tree.t Classes ------- .. autoapisummary:: data_structures.binary_tree.avl_tree.AVLtree data_structures.binary_tree.avl_tree.MyNode data_structures.binary_tree.avl_tree.MyQueue Functions --------- .. autoapisummary:: data_structures.binary_tree.avl_tree._test data_structures.binary_tree.avl_tree.del_node data_structures.binary_tree.avl_tree.get_height data_structures.binary_tree.avl_tree.get_left_most data_structures.binary_tree.avl_tree.get_right_most data_structures.binary_tree.avl_tree.insert_node data_structures.binary_tree.avl_tree.left_rotation data_structures.binary_tree.avl_tree.lr_rotation data_structures.binary_tree.avl_tree.my_max data_structures.binary_tree.avl_tree.right_rotation data_structures.binary_tree.avl_tree.rl_rotation Module Contents --------------- .. py:class:: AVLtree An AVL tree doctest Examples: >>> t = AVLtree() >>> t.insert(4) insert:4 >>> print(str(t).replace(" \n","\n")) 4 ************************************* >>> t.insert(2) insert:2 >>> print(str(t).replace(" \n","\n").replace(" \n","\n")) 4 2 * ************************************* >>> t.insert(3) insert:3 right rotation node: 2 left rotation node: 4 >>> print(str(t).replace(" \n","\n").replace(" \n","\n")) 3 2 4 ************************************* >>> t.get_height() 2 >>> t.del_node(3) delete:3 >>> print(str(t).replace(" \n","\n").replace(" \n","\n")) 4 2 * ************************************* .. py:method:: __str__() -> str .. py:method:: del_node(data: Any) -> None .. py:method:: get_height() -> int .. py:method:: insert(data: Any) -> None .. py:attribute:: root :type: MyNode | None :value: None .. py:class:: MyNode(data: Any) .. py:method:: get_data() -> Any .. py:method:: get_height() -> int .. py:method:: get_left() -> MyNode | None .. py:method:: get_right() -> MyNode | None .. py:method:: set_data(data: Any) -> None .. py:method:: set_height(height: int) -> None .. py:method:: set_left(node: MyNode | None) -> None .. py:method:: set_right(node: MyNode | None) -> None .. py:attribute:: data .. py:attribute:: height :type: int :value: 1 .. py:attribute:: left :type: MyNode | None :value: None .. py:attribute:: right :type: MyNode | None :value: None .. py:class:: MyQueue .. py:method:: count() -> int .. py:method:: is_empty() -> bool .. py:method:: pop() -> Any .. py:method:: print_queue() -> None .. py:method:: push(data: Any) -> None .. py:attribute:: data :type: list[Any] :value: [] .. py:attribute:: head :type: int :value: 0 .. py:attribute:: tail :type: int :value: 0 .. py:function:: _test() -> None .. py:function:: del_node(root: MyNode, data: Any) -> MyNode | None .. py:function:: get_height(node: MyNode | None) -> int .. py:function:: get_left_most(root: MyNode) -> Any .. py:function:: get_right_most(root: MyNode) -> Any .. py:function:: insert_node(node: MyNode | None, data: Any) -> MyNode | None .. py:function:: left_rotation(node: MyNode) -> MyNode a mirror symmetry rotation of the left_rotation .. py:function:: lr_rotation(node: MyNode) -> MyNode A A Br / \ / \ / \ B C LR Br C RR B A / \ --> / \ --> / / \ Bl Br B UB Bl UB C \ / UB Bl RR = right_rotation LR = left_rotation .. py:function:: my_max(a: int, b: int) -> int .. py:function:: right_rotation(node: MyNode) -> MyNode A B / \ / \ B C Bl A / \ --> / / \ Bl Br UB Br C / UB UB = unbalanced node .. py:function:: rl_rotation(node: MyNode) -> MyNode .. py:data:: t