Easy Algorithm & Data Structure
Project description
Installation
pip3 install --upgrade ezcode
PyPi Releases
https://pypi.org/project/ezcode/#history
Development
git clone https://github.com/zheng-gao/ez_code.git && cd ez_code
./ez.sh --development
Publish Release
git clone https://github.com/zheng-gao/ez_code.git && cd ez_code
./ez.sh --release
Tree
Binary Tree Printer
>>> class Node:
... def __init__(self, v=None, l=None, r=None):
... self.v = v
... self.l = l
... self.r = r
...
>>> from ezcode.tree.printer import BinaryTreePrinter
>>> root = Node(0, Node(1, Node(3, r=Node(7)), Node(4)), Node(2, Node(5, Node(8), Node(9)), Node(6)))
>>> printer = BinaryTreePrinter(data_name="v", left_name="l", right_name="r")
>>> printer.print(root)
┌──────────(0)──────────┐
┌────(1)────┐ ┌────(2)────┐
(3)─┐ (4) ┌─(5)─┐ (6)
(7) (8) (9)
Random Binary Tree
>>> from ezcode.tree.binary_tree import RandomBinaryTree
>>> tree = RandomBinaryTree(size=10, lower_bound=-5, upper_bound=10)
>>> tree.print()
┌────────────(3)────────────┐
┌────(-4)─────┐ (5)─────┐
┌─(8) ┌─(6) ┌──(9)─┐
(6) (-2) (2) (2)
>>> tree.make_tree()
>>> tree.print()
┌────────────(6)────────────┐
┌─────(7)─────┐ ┌─────(6)─────┐
(9) ┌─(1)──┐ (9) ┌──(3)
(1) (5) (10)
Algorithm
Traversals
>>> from ezcode.tree.binary_tree import BinaryTree
>>> root = Node(0, Node(1, Node(3, r=Node(7)), Node(4)), Node(2, Node(5, Node(8), Node(9)), Node(6)))
>>> tree = BinaryTree(root, data_name="v", left_name="l", right_name="r")
>>> tree.print()
┌──────────(0)──────────┐
┌────(1)────┐ ┌────(2)────┐
(3)─┐ (4) ┌─(5)─┐ (6)
(7) (8) (9)
>>> print(f" Pre-Order: {tree.traversal('pre-order')}")
>>> print(f" In-Order: {tree.traversal('in-order')}")
>>> print(f"Post-Order: {tree.traversal('post-order')}")
Pre-Order: [0, 1, 3, 7, 4, 2, 5, 8, 9, 6]
In-Order: [1, 3, 7, 4, 0, 2, 5, 8, 9, 6]
Post-Order: [1, 3, 7, 4, 2, 5, 8, 9, 6, 0]
Lowest Common Ancestor
>>> from ezcode.tree.binary_tree import BinaryTree
>>> root = Node(0, Node(1, Node(3, r=Node(7)), Node(4)), Node(2, Node(5, Node(8), Node(9)), Node(6)))
>>> tree = BinaryTree(root, data_name="v", left_name="l", right_name="r")
>>> tree.print()
┌──────────(0)──────────┐
┌────(1)────┐ ┌────(2)────┐
(3)─┐ (4) ┌─(5)─┐ (6)
(7) (8) (9)
>>> n6, n7, n8 = root.r.r, root.l.l.r, root.r.l.l
>>> tree.node_data(tree.lowest_common_ancestor([n6, n8]))
2
>>> tree.node_data(tree.lowest_common_ancestor([n6, n7, n8]))
0
Subtree Stats
>>> from ezcode.tree.binary_tree import BinaryTree
>>> root = Node(-2, Node(8, Node(-4, l=Node(-2)), Node(3, l=Node(-1))), Node(-3, l=Node(2, Node(10), Node(7))))
>>> tree = BinaryTree(root, data_name="v", left_name="l", right_name="r")
>>> tree.print()
┌───────────(-2)────────────┐
┌─────(8)─────┐ ┌────(-3)
┌(-4) ┌─(3) ┌──(2)─┐
(-2) (-1) (10) (7)
>>> print(f"Subtree Sum Min: {tree.subtree('sum-min')}")
>>> print(f"Subtree Sum Max: {tree.subtree('sum-max')}")
>>> print(f"Subtree Avg Min: {tree.subtree('avg-min')}")
>>> print(f"Subtree Avg Max: {tree.subtree('avg-max')}")
Subtree Sum Min: -6
Subtree Sum Max: 19
Subtree Avg Min: -3.0
Subtree Avg Max: 10.0
Max Path Sum
>>> from ezcode.tree.binary_tree import BinaryTree
>>> root = Node(-2, Node(8, Node(-4, l=Node(-2)), Node(3, l=Node(-1))), Node(-3, l=Node(2, Node(10), Node(7))))
>>> tree = BinaryTree(root, data_name="v", left_name="l", right_name="r")
>>> tree.print()
┌───────────(-2)────────────┐
┌─────(8)─────┐ ┌────(-3)
┌(-4) ┌─(3) ┌──(2)─┐
(-2) (-1) (10) (7)
>>> tree.max_path_sum()
19
Depth & Balance
>>> from ezcode.tree.binary_tree import BinaryTree
>>> root = Node(0, Node(0, Node(0), Node(0, r=Node(0))), Node(0, Node(0), Node(0, r=Node(0, l=Node(0)))))
>>> tree = BinaryTree(root, data_name="v", left_name="l", right_name="r")
>>> tree.print()
┌──────────────────────(0)──────────────────────┐
┌──────────(0)──────────┐ ┌──────────(0)──────────┐
(0) (0)────┐ (0) (0)────┐
(0) ┌─(0)
(0)
>>> [tree.depth(), tree.is_balanced()]
[5, False]
>>> root = Node(0, Node(0, Node(0, l=Node(0)), Node(0, r=Node(0))), Node(0, Node(0), Node(0, l=Node(0))))
>>> tree.root = root
>>> tree.print()
┌──────────(0)──────────┐
┌────(0)────┐ ┌────(0)────┐
┌─(0) (0)─┐ (0) ┌─(0)
(0) (0) (0)
>>> [tree.depth(), tree.is_balanced()]
[4, True]
Serialization & Deserialization
>>> from ezcode.tree.printer import BinaryTreePrinter
>>> from ezcode.tree.binary_tree import BinaryTree
>>> printer = BinaryTreePrinter(data_name="v", left_name="l", right_name="r")
>>> root = Node(1, Node(2), Node(3, Node(4), Node(5)))
>>> tree = BinaryTree(root, data_name="v", left_name="l", right_name="r")
>>> tree.print()
┌────(1)────┐
(2) ┌─(3)─┐
(4) (5)
>>> serialized = tree.serialize(delimiter=",")
>>> print(serialized)
1,2,3,None,None,4,5,None,None,None,None
>>> printer.print(tree.deserialize(formatter=int, string=serialized, delimiter=","))
┌────(1)────┐
(2) ┌─(3)─┐
(4) (5)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ezcode-0.0.4.tar.gz
(9.1 kB
view details)
Built Distribution
File details
Details for the file ezcode-0.0.4.tar.gz
.
File metadata
- Download URL: ezcode-0.0.4.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 90fea23ed1bd09dbe208ce2b12d58d202e24c71fbc83dbf167ea0eb33c7cfcbf |
|
MD5 | 179d5bbbea5f7d14ebbfb80ed47c30bb |
|
BLAKE2b-256 | 320a8118838bd840bf0558ef88eb93b7ed014d08377d3954c127e1256125a5f4 |
File details
Details for the file ezcode-0.0.4-py3-none-any.whl
.
File metadata
- Download URL: ezcode-0.0.4-py3-none-any.whl
- Upload date:
- Size: 8.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 45e8da855f89913a1f71027179933c96c46ea349ef3d3a82aec1084896776d40 |
|
MD5 | d50568c9715be918fec6833881e79b2a |
|
BLAKE2b-256 | 098208517cf881d18ad36f6861c2be44f976ba94997d85005ba1ce601e28539e |