Skip to main content

thri

PyPI version License: MIT

This library was created to simplify the concept of trees by displaying them in the same way as in the linkedit library. To make it clear that trees are just linked lists that can refer to at most two nodes instead of one. Trees can also refer to a single node or no nodes at all, such as the end of a linked list. Trees are a recursive and non-linear data structure. This library is specifically designed for beginners in data structures.

Installation

You can install thri via pip:

pip install thri

Usage

For Binary Search Tree

from thri import binarySearchTree


x = binarySearchTree([5, 4, 6, 2, 8, 1, 3, 7, 9])
# it's use level-order algorithm as default 
print(x)

Output

╒════════════════╤════════════════════════╤══════════════╤══════════════════════╤═══════════════╤═══════════════════════╕
│ Current node   │ Current node @ddress   │ Left child   │ Left child @ddress   │ Right child   │ Right child @ddress   │
╞════════════════╪════════════════════════╪══════════════╪══════════════════════╪═══════════════╪═══════════════════════╡
│ 5 (Root)       │ 0x7f4900821c10         │ 4            │ 0x7f4900820750       │ 6             │ 0x7f4900821e90        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 4              │ 0x7f4900820750         │ 2            │ 0x7f4900821f10       │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 6              │ 0x7f4900821e90         │ None         │ 0x959cc0 (nil/0x0)   │ 8             │ 0x7f4900897cd0        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 2              │ 0x7f4900821f10         │ 1            │ 0x7f4900663d90       │ 3             │ 0x7f4900663810        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 8              │ 0x7f4900897cd0         │ 7            │ 0x7f4900663a50       │ 9             │ 0x7f4900663750        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 1              │ 0x7f4900663d90         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 3              │ 0x7f4900663810         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 7              │ 0x7f4900663a50         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 9              │ 0x7f4900663750         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
╘════════════════╧════════════════════════╧══════════════╧══════════════════════╧═══════════════╧═══════════════════════╛

You Can print The Tree With All Possible Traversing Algorithms

pre-order Algorithm
from thri import binarySearchTree


x = binarySearchTree([5, 4, 6, 2, 8, 1, 3, 7, 9], algorithm="pre-order")
print(x)

Output

╒════════════════╤════════════════════════╤══════════════╤══════════════════════╤═══════════════╤═══════════════════════╕
│ Current node   │ Current node @ddress   │ Left child   │ Left child @ddress   │ Right child   │ Right child @ddress   │
╞════════════════╪════════════════════════╪══════════════╪══════════════════════╪═══════════════╪═══════════════════════╡
│ 5 (Root)       │ 0x7f6bc7ac4750         │ 4            │ 0x7f6bc7ac4810       │ 6             │ 0x7f6bc7ac5f10        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 4              │ 0x7f6bc7ac4810         │ 2            │ 0x7f6bc7ac5610       │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 2              │ 0x7f6bc7ac5610         │ 1            │ 0x7f6bc7b3bd10       │ 3             │ 0x7f6bc793fb50        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 1              │ 0x7f6bc7b3bd10         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 3              │ 0x7f6bc793fb50         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 6              │ 0x7f6bc7ac5f10         │ None         │ 0x959cc0 (nil/0x0)   │ 8             │ 0x7f6bc7ac5e90        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 8              │ 0x7f6bc7ac5e90         │ 7            │ 0x7f6bc793fb90       │ 9             │ 0x7f6bc793f610        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 7              │ 0x7f6bc793fb90         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 9              │ 0x7f6bc793f610         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
╘════════════════╧════════════════════════╧══════════════╧══════════════════════╧═══════════════╧═══════════════════════╛
in-order Algorithm
from thri import binarySearchTree


x = binarySearchTree([5, 4, 6, 2, 8, 1, 3, 7, 9], algorithm="in-order")
print(x)

Output

╒════════════════╤════════════════════════╤══════════════╤══════════════════════╤═══════════════╤═══════════════════════╕
│ Current node   │ Current node @ddress   │ Left child   │ Left child @ddress   │ Right child   │ Right child @ddress   │
╞════════════════╪════════════════════════╪══════════════╪══════════════════════╪═══════════════╪═══════════════════════╡
│ 1              │ 0x7fa196023c90         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 2              │ 0x7fa1961c1e90         │ 1            │ 0x7fa196023c90       │ 3             │ 0x7fa196023cd0        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 3              │ 0x7fa196023cd0         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 4              │ 0x7fa1961c1f10         │ 2            │ 0x7fa1961c1e90       │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 5 (Root)       │ 0x7fa1961c0810         │ 4            │ 0x7fa1961c1f10       │ 6             │ 0x7fa1961c1610        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 6              │ 0x7fa1961c1610         │ None         │ 0x959cc0 (nil/0x0)   │ 8             │ 0x7fa196237d10        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 7              │ 0x7fa196023750         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 8              │ 0x7fa196237d10         │ 7            │ 0x7fa196023750       │ 9             │ 0x7fa196023990        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 9              │ 0x7fa196023990         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
╘════════════════╧════════════════════════╧══════════════╧══════════════════════╧═══════════════╧═══════════════════════╛
post-order Algorithm
from thri import binarySearchTree


x = binarySearchTree([5, 4, 6, 2, 8, 1, 3, 7, 9], algorithm="post-order")
print(x)

Output

╒════════════════╤════════════════════════╤══════════════╤══════════════════════╤═══════════════╤═══════════════════════╕
│ Current node   │ Current node @ddress   │ Left child   │ Left child @ddress   │ Right child   │ Right child @ddress   │
╞════════════════╪════════════════════════╪══════════════╪══════════════════════╪═══════════════╪═══════════════════════╡
│ 1              │ 0x7f99ed423c90         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 3              │ 0x7f99ed423cd0         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 2              │ 0x7f99ed5c1e90         │ 1            │ 0x7f99ed423c90       │ 3             │ 0x7f99ed423cd0        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 4              │ 0x7f99ed5c1f10         │ 2            │ 0x7f99ed5c1e90       │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 7              │ 0x7f99ed423750         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 9              │ 0x7f99ed423990         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 8              │ 0x7f99ed637d10         │ 7            │ 0x7f99ed423750       │ 9             │ 0x7f99ed423990        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 6              │ 0x7f99ed5c1610         │ None         │ 0x959cc0 (nil/0x0)   │ 8             │ 0x7f99ed637d10        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 5 (Root)       │ 0x7f99ed5c0810         │ 4            │ 0x7f99ed5c1f10       │ 6             │ 0x7f99ed5c1610        │
╘════════════════╧════════════════════════╧══════════════╧══════════════════════╧═══════════════╧═══════════════════════╛

You Can Add Nodes After Creation Or Create The Binary Search Tree From Scratch Node By Node

from thri import binarySearchTree


x = binarySearchTree()
x.add(5)
x.add(4)
x.add(6)
x.add(2)
x.add(8)
x.add(1)
x.add(3)
x.add(7)
x.add(9)
print(x)

Output

╒════════════════╤════════════════════════╤══════════════╤══════════════════════╤═══════════════╤═══════════════════════╕
│ Current node   │ Current node @ddress   │ Left child   │ Left child @ddress   │ Right child   │ Right child @ddress   │
╞════════════════╪════════════════════════╪══════════════╪══════════════════════╪═══════════════╪═══════════════════════╡
│ 5 (Root)       │ 0x7ff824dc1c10         │ 4            │ 0x7ff824dc0750       │ 6             │ 0x7ff824dc1e90        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 4              │ 0x7ff824dc0750         │ 2            │ 0x7ff824dc1f10       │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 6              │ 0x7ff824dc1e90         │ None         │ 0x959cc0 (nil/0x0)   │ 8             │ 0x7ff824e37cd0        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 2              │ 0x7ff824dc1f10         │ 1            │ 0x7ff824c43c50       │ 3             │ 0x7ff824c43c90        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 8              │ 0x7ff824e37cd0         │ 7            │ 0x7ff824c43710       │ 9             │ 0x7ff824c43950        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 1              │ 0x7ff824c43c50         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 3              │ 0x7ff824c43c90         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 7              │ 0x7ff824c43710         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 9              │ 0x7ff824c43950         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
╘════════════════╧════════════════════════╧══════════════╧══════════════════════╧═══════════════╧═══════════════════════╛

You Can Search For A Value

from thri import binarySearchTree


x = binarySearchTree([5, 4, 6, 2, 8, 1, 3, 7, 9])
x.search(4)
x.search(5)
x.search(3)

Output

Found after 1 step
Found after 0 step
Found after 3 steps with the path : [5, 4, 2]

You Can Delete A Node By Value

from thri import binarySearchTree


x = binarySearchTree([5, 4, 6, 2, 8, 1, 3, 7, 9])
print(x)
x.remove(5)
print(x)

Output

╒════════════════╤════════════════════════╤══════════════╤══════════════════════╤═══════════════╤═══════════════════════╕
│ Current node   │ Current node @ddress   │ Left child   │ Left child @ddress   │ Right child   │ Right child @ddress   │
╞════════════════╪════════════════════════╪══════════════╪══════════════════════╪═══════════════╪═══════════════════════╡
│ 5 (Root)       │ 0x7f4a34921b10         │ 4            │ 0x7f4a34920650       │ 6             │ 0x7f4a34921e10        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 4              │ 0x7f4a34920650         │ 2            │ 0x7f4a34923590       │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 6              │ 0x7f4a34921e10         │ None         │ 0x959cc0 (nil/0x0)   │ 8             │ 0x7f4a34997bd0        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 2              │ 0x7f4a34923590         │ 1            │ 0x7f4a347638d0       │ 3             │ 0x7f4a34763cd0        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 8              │ 0x7f4a34997bd0         │ 7            │ 0x7f4a347636d0       │ 9             │ 0x7f4a34763910        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 1              │ 0x7f4a347638d0         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 3              │ 0x7f4a34763cd0         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 7              │ 0x7f4a347636d0         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 9              │ 0x7f4a34763910         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
╘════════════════╧════════════════════════╧══════════════╧══════════════════════╧═══════════════╧═══════════════════════╛
╒════════════════╤════════════════════════╤══════════════╤══════════════════════╤═══════════════╤═══════════════════════╕
│ Current node   │ Current node @ddress   │ Left child   │ Left child @ddress   │ Right child   │ Right child @ddress   │
╞════════════════╪════════════════════════╪══════════════╪══════════════════════╪═══════════════╪═══════════════════════╡
│ 4 (Root)       │ 0x7f4a34921b10         │ 2            │ 0x7f4a34923590       │ 6             │ 0x7f4a34921e10        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 2              │ 0x7f4a34923590         │ 1            │ 0x7f4a347638d0       │ 3             │ 0x7f4a34763cd0        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 6              │ 0x7f4a34921e10         │ None         │ 0x959cc0 (nil/0x0)   │ 8             │ 0x7f4a34997bd0        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 1              │ 0x7f4a347638d0         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 3              │ 0x7f4a34763cd0         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 8              │ 0x7f4a34997bd0         │ 7            │ 0x7f4a347636d0       │ 9             │ 0x7f4a34763910        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 7              │ 0x7f4a347636d0         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 9              │ 0x7f4a34763910         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
╘════════════════╧════════════════════════╧══════════════╧══════════════════════╧═══════════════╧═══════════════════════╛

You Can Know How Many Node In The Tree

from thri import binarySearchTree

x = binarySearchTree([5, 4, 6, 2, 8, 1, 3, 7, 9])
print(len(x))

Output

9

You Can Know The Max/Min Value In The Tree

from thri import binarySearchTree


x = binarySearchTree([5, 4, 6, 2, 8, 1, 3, 7, 9])
print(x.max())
print(x.min())

Output

9
1

Advanced Usage

from thri import binarySearchTree


def pre_order(root):
    if root is not None:
        print(root.get_data())
        pre_order(root.left_child())
        pre_order(root.right_child())


def in_order(root):
    if root is not None:
        in_order(root.left_child())
        print(root.get_data())
        in_order(root.right_child())


def post_order(root):
    if root is not None:
        post_order(root.left_child())
        post_order(root.right_child())
        print(root.get_data())


x = binarySearchTree([5, 4, 6, 2, 8, 1, 3, 7, 9])
root = x.root
print("pre-order: ")
pre_order(root)
print("in-order: ")
in_order(root)
print("post-order: ")
post_order(root)

Output

pre-order: 
5
4
2
1
3
6
8
7
9
in-order: 
1
2
3
4
5
6
7
8
9
post-order: 
1
3
2
4
7
9
8
6
5

For Complete Binary Tree

from thri import completeBinaryTree


x = completeBinaryTree([5, 4, 6, 2, 8, 1, 3, 7, 9])
# it's use level-order algorithm as default
print(x)

Output

╒════════════════╤════════════════════════╤══════════════╤══════════════════════╤═══════════════╤═══════════════════════╕
│ Current node   │ Current node @ddress   │ Left child   │ Left child @ddress   │ Right child   │ Right child @ddress   │
╞════════════════╪════════════════════════╪══════════════╪══════════════════════╪═══════════════╪═══════════════════════╡
│ 5 (Root)       │ 0x7fd4ec525b10         │ 4            │ 0x7fd4ec525e10       │ 6             │ 0x7fd4ec59bc50        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 4              │ 0x7fd4ec525e10         │ 2            │ 0x7fd4ec525d90       │ 8             │ 0x7fd4ec37f690        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 6              │ 0x7fd4ec59bc50         │ 1            │ 0x7fd4ec37fbd0       │ 3             │ 0x7fd4ec37f450        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 2              │ 0x7fd4ec525d90         │ 7            │ 0x7fd4ec37fc10       │ 9             │ 0x7fd4ec37f890        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 8              │ 0x7fd4ec37f690         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 1              │ 0x7fd4ec37fbd0         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 3              │ 0x7fd4ec37f450         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 7              │ 0x7fd4ec37fc10         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 9              │ 0x7fd4ec37f890         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
╘════════════════╧════════════════════════╧══════════════╧══════════════════════╧═══════════════╧═══════════════════════╛

printing The Tree With All Possible Traversing Algorithms

pre-order Algorithm
from thri import completeBinaryTree


x = completeBinaryTree([5, 4, 6, 2, 8, 1, 3, 7, 9], algorithm="pre-order")
print(x)

Output

╒════════════════╤════════════════════════╤══════════════╤══════════════════════╤═══════════════╤═══════════════════════╕
│ Current node   │ Current node @ddress   │ Left child   │ Left child @ddress   │ Right child   │ Right child @ddress   │
╞════════════════╪════════════════════════╪══════════════╪══════════════════════╪═══════════════╪═══════════════════════╡
│ 5 (Root)       │ 0x7fcb70524810         │ 4            │ 0x7fcb70525e90       │ 6             │ 0x7fcb7059bd10        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 4              │ 0x7fcb70525e90         │ 2            │ 0x7fcb70525610       │ 8             │ 0x7fcb7037f610        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 2              │ 0x7fcb70525610         │ 7            │ 0x7fcb7037fb90       │ 9             │ 0x7fcb7037f810        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 7              │ 0x7fcb7037fb90         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 9              │ 0x7fcb7037f810         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 8              │ 0x7fcb7037f610         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 6              │ 0x7fcb7059bd10         │ 1            │ 0x7fcb7037fb50       │ 3             │ 0x7fcb7037f3d0        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 1              │ 0x7fcb7037fb50         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 3              │ 0x7fcb7037f3d0         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
╘════════════════╧════════════════════════╧══════════════╧══════════════════════╧═══════════════╧═══════════════════════╛
in-order Algorithm
from thri import completeBinaryTree


x = completeBinaryTree([5, 4, 6, 2, 8, 1, 3, 7, 9], algorithm="in-order")
print(x)

Output

╒════════════════╤════════════════════════╤══════════════╤══════════════════════╤═══════════════╤═══════════════════════╕
│ Current node   │ Current node @ddress   │ Left child   │ Left child @ddress   │ Right child   │ Right child @ddress   │
╞════════════════╪════════════════════════╪══════════════╪══════════════════════╪═══════════════╪═══════════════════════╡
│ 7              │ 0x7f287057fb90         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 2              │ 0x7f2870725610         │ 7            │ 0x7f287057fb90       │ 9             │ 0x7f287057f810        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 9              │ 0x7f287057f810         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 4              │ 0x7f2870725e90         │ 2            │ 0x7f2870725610       │ 8             │ 0x7f287057f610        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 8              │ 0x7f287057f610         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 5 (Root)       │ 0x7f2870724810         │ 4            │ 0x7f2870725e90       │ 6             │ 0x7f287079bd10        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 1              │ 0x7f287057fb50         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 6              │ 0x7f287079bd10         │ 1            │ 0x7f287057fb50       │ 3             │ 0x7f287057f3d0        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 3              │ 0x7f287057f3d0         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
╘════════════════╧════════════════════════╧══════════════╧══════════════════════╧═══════════════╧═══════════════════════╛
post-order Algorithm
from thri import completeBinaryTree


x = completeBinaryTree([5, 4, 6, 2, 8, 1, 3, 7, 9], algorithm="post-order")
print(x)

Output

╒════════════════╤════════════════════════╤══════════════╤══════════════════════╤═══════════════╤═══════════════════════╕
│ Current node   │ Current node @ddress   │ Left child   │ Left child @ddress   │ Right child   │ Right child @ddress   │
╞════════════════╪════════════════════════╪══════════════╪══════════════════════╪═══════════════╪═══════════════════════╡
│ 7              │ 0x7f83ddc838d0         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 9              │ 0x7f83ddc28150         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 2              │ 0x7f83dde21610         │ 7            │ 0x7f83ddc838d0       │ 9             │ 0x7f83ddc28150        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 8              │ 0x7f83ddc83b10         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 4              │ 0x7f83dde21e90         │ 2            │ 0x7f83dde21610       │ 8             │ 0x7f83ddc83b10        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 1              │ 0x7f83ddc83e10         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 3              │ 0x7f83ddc83b90         │ None         │ 0x959cc0 (nil/0x0)   │ None          │ 0x959cc0 (nil/0x0)    │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 6              │ 0x7f83dde97d10         │ 1            │ 0x7f83ddc83e10       │ 3             │ 0x7f83ddc83b90        │
├────────────────┼────────────────────────┼──────────────┼──────────────────────┼───────────────┼───────────────────────┤
│ 5 (Root)       │ 0x7f83dde20810         │ 4            │ 0x7f83dde21e90       │ 6             │ 0x7f83dde97d10        │
╘════════════════╧════════════════════════╧══════════════╧══════════════════════╧═══════════════╧═══════════════════════╛

Knowing How Many Node In The Tree

from thri import completeBinaryTree

x = completeBinaryTree([5, 4, 6, 2, 8, 1, 3, 7, 9])
print(len(x))

Output

9

Advanced Usage

from thri import completeBinaryTree


def pre_order(root):
    if root is not None:
        print(root.get_data())
        pre_order(root.left_child())
        pre_order(root.right_child())


def in_order(root):
    if root is not None:
        in_order(root.left_child())
        print(root.get_data())
        in_order(root.right_child())


def post_order(root):
    if root is not None:
        post_order(root.left_child())
        post_order(root.right_child())
        print(root.get_data())


x = completeBinaryTree([5, 4, 6, 2, 8, 1, 3, 7, 9])
root = x.root
print("pre-order: ")
pre_order(root)
print("in-order: ")
in_order(root)
print("post-order: ")
post_order(root)

Output

pre-order: 
5
4
2
7
9
8
6
1
3
in-order: 
7
2
9
4
8
5
1
6
3
post-order: 
7
9
2
8
4
1
3
6
5

License

This project is licensed under the MIT LICENSE - see the LICENSE for more details.

Metadata

Release files for thri 1.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for thri 1.0.5
File Size Uploaded Provenance Actions
thri-1.0.5.tar.gz 14.8 kB Without provenance Details for thri-1.0.5.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for thri 1.0.5
File Interpreter ABI Platform Actions
thri-1.0.5-py3-none-any.whl Python 3 none any Details for thri-1.0.5-py3-none-any.whl

Total release size: 24.0 kB

Release files / thri-1.0.5.tar.gz

Download URL thri-1.0.5.tar.gz
Size 14.8 kB
Tags Source
SHA-256 checksum
How to use checksums
0b344543d5c6e494c5bc2c01e3312c7dd158aee9d8a9df2ce07d517fe83450fd
BLAKE2b-256 checksum
How to use checksums
e8c9b81adb8ffd6d87e638f24e129fd02debe8119ad58c7d8f00653fd3615ff9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.2

Release files / thri-1.0.5-py3-none-any.whl

Download URL thri-1.0.5-py3-none-any.whl
Size 9.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2eec52413c7cbfc878b8baf1d67bd1c60ad4607e600fa9404b652fc5fdf55d8d
BLAKE2b-256 checksum
How to use checksums
42e49de9a46e3d97d466f35f50b313bc665dc4d8b53a5f22006763e3daee1a50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.2

Security for thri 1.0.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.5 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page