原文:python library for learning binary trees作者:joohwan翻譯:賴信濤責編:仲培藝
學過二叉樹的朋友都有過這樣的經歷:按照二叉樹的資料手動模擬畫出來二叉樹。但是現在,有了binarytree這個庫,你可以不必費這個麻煩了!
binarytree是乙個小型的python庫,給你提供了簡單的api,可以依照樹的形式列印乙個二叉樹,以及二叉樹的資訊概覽。你可以專注於你的演算法了!
通過pypi安裝穩定版:
從github安裝最新版本:~$ pip install binarytree
取決於你環境的不同,可能會需要sudo許可權。~$ git clone
~$ python binarytree/setup.py install
預設情況下,二叉樹使用下面的class作為節點:
使用下面的方式以漂亮的形式列印二叉樹:class node(object):
def __init__(self, value):
self.value = value
self.left = none
self.right = none
也支援list形式的二叉樹:from binarytree import tree, bst, heap, pprint
# generate a random binary tree and return its root
my_tree = tree(height=5, balanced=false)
# generate a random bst and return its root
my_bst = bst(height=5)
# generate a random max heap and return its root
my_heap = heap(height=3, max=true)
# pretty print the trees in stdout
pprint(my_tree)
pprint(my_bst)
pprint(my_heap)
快速檢查二叉樹的各個屬性:from heapq import heapify
from binarytree import tree, convert, pprint
my_list = [7, 3, 2, 6, 9, 4, 1, 5, 8]
# convert the list into a tree and return its root
my_tree = convert(my_list)
# convert the list into a heap and return its root
heapify(my_list)
my_tree = convert(my_list)
# convert the tree back to a list
my_list = convert(my_tree)
# pretty-printing also works on lists
pprint(my_list)
匯入node class然後構建你自己的樹:from binarytree import tree, inspect
my_tree = tree(height=10)
result = inspect(my_tree)
print(result['height'])
print(result['node_count'])
print(result['leaf_count'])
print(result['min_value'])
print(result['max_value'])
print(result['min_leaf_depth'])
print(result['max_leaf_depth'])
print(result['is_bst'])
print(result['is_max_heap'])
print(result['is_min_heap'])
print(result['is_height_balanced'])
print(result['is_weight_balanced'])
如果預設的node不能滿足你的需要,你可以自定義node:from binarytree import node, pprint
root = node(1)
root.left = node(2)
root.right = node(3)
root.left.left = node(4)
root.left.right = node(5)
pprint(root)
andydoan說:也可以關注一下這些圖表列印的庫:from binarytree import node, setup, tree, pprint
# define your own null/sentinel value
my_null = -1
# define your own node class
class mynode(object):
def __init__(self, data, left, right):
self.data = data
self.l_child = left
self.r_child = right
setup(
node_init_func=lambda v: mynode(v, my_null, my_null),
node_class=mynode,
null_value=my_null,
value_attr='data',
left_attr='l_child',
right_attr='r_child'
)my_custom_tree = tree()
pprint(my_custom_tree)
二叉樹類BinaryTree
二叉樹是結點的有限集合,該集合或者為空集,或者是由乙個根和兩棵互不相交的稱為該根的左子樹和右子樹的二叉樹組成.二叉樹可以為空集,可以有空二叉樹,也可以有空的左子樹 或 和 又子樹.二叉樹的性質 1.第i層至多有2 i 1 個結點.2.高度為h的二叉樹上至多有2 h 1個結點.3.包含n個元素的二叉樹...
BinaryTree 二叉樹類的實現
二叉樹結點的抽象資料型別 1 template 2class binarytreenode 3 二叉樹結點函式功能實現 1 template 2 binarytreenode binarytreenode 36 template 7 binarytreenode binarytreenode con...
Go語言實現二叉樹(BinaryTree)
二叉樹的操作原理 取第乙個節點為根節點,比根節點小的數放在根節點的左子樹 左節點 比根節點大的數放在根節點的右子數 右節點 取得的時候按照中序遍歷的方式 左 中 右 實現 如下 節點結構體 type node struct 二叉樹結構體 type binarytree struct 查詢時記錄下標 ...