欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python 諾模圖

Python諾模圖是一種可視化數(shù)據(jù)結(jié)構(gòu)的方法。它是通過將數(shù)據(jù)項與節(jié)點、邊和子樹等圖形元素相結(jié)合來展示數(shù)據(jù)結(jié)構(gòu)的樣子。諾模圖主要用于展示二叉樹、堆和平衡樹等樹狀結(jié)構(gòu)。

import matplotlib.pyplot as plt
from binarytree import build
root = build([1, 2, 3, 4, 5, 6])
plt.figure(figsize=(10, 5))
def plot_node(node, pos):
text = node.value if node is not None else ''
kwargs = {
'color': 'black',
'fontsize': 12,
'ha': 'center',
'va': 'center',
'bbox': {'facecolor': 'white', 'edgecolor': 'black'}
}
plt.text(*pos, text, **kwargs)
level_width = [1]
idx = 1
queue = [(root, 0, 0)]
while queue:
node, level, idx = queue.pop(0)
pos = ((2 ** level - 1) / sum(level_width) * 10, level * -1 + 5)
plot_node(node, pos)
if node.left:
queue.append((node.left, level + 1, idx * 2))
if node.right:
queue.append((node.right, level + 1, idx * 2 + 1))
if idx == 2 ** (level+1) - 2:
level_width.append(len(queue))
plt.axis('off')
plt.show()

Python諾模圖的主要工具是matplotlib,而二叉樹展示則需要使用binarytree工具。二叉樹可以使用一個列表傳遞給build函數(shù),此處使用了默認(rèn)的例子。

諾模圖的主要思想是采用廣度優(yōu)先搜索的思路,依次遍歷每一層的節(jié)點,計算出該節(jié)點的坐標(biāo),然后標(biāo)記這個節(jié)點。下一層的節(jié)點通過遍歷隊列得到。坐標(biāo)計算需看懂代碼實現(xiàn)。

Python諾模圖的應(yīng)用場景廣泛,如二叉挖掘、數(shù)據(jù)可視化等等,是Python中非常重要的可視化工具之一。