在python中使用graphviz繪製二叉排序樹
2.進入cmd,輸入 pip install graphviz
實現**
# python 實現二叉樹
# author e
import queue
from graphviz import digraph
class
node
(object):
def__init__
(self, data =
none
, parent =
none):
self.data = data
self.parent = parent
self.right =
none
self.left =
none
class
binarytree
(object):
def__init__
(self,
list):
self.root = node(
)for ele in
list
: self.insert(ele, self.root)
definsert
(self, x, r)
:if r.data ==
none
: self.root.data = x
if x < r.data:
if r.left ==
none
: r.left = node(x, r)
else
: self.insert(x, r.left)
if x > r.data:
if r.right ==
none
: r.right = node(x, r)
else
: self.insert(x, r.right)
deflayerorder
(self)
:# 初始化佇列
q = queue.queue(
) q.put(self.root)
while
(q.empty()!=
true):
node = q.get(
)print
(node.data)
if node.left !=
none
: q.put(node.left)
if node.right !=
none
: q.put(node.right)
defdrawpic
(self)
: dot = digraph(comment=
'the test table'
) q = queue.queue(
) q.put(self.root)
while
(q.empty()!=
true):
node = q.get(
) dot.node(name =
str(node.data)
, lable =
str(node.data)
)if node.left !=
none
: dot.node(name =
str(node.left.data)
, lable =
str(node.left.data)
) dot.edge(
str(node.data)
,str
(node.left.data)
) q.put(node.left)
else
:#生成空節點invisl,讓生成的二叉樹可以分清左右子樹
dot.node(name =
str(node.data)
+'invisl'
, lable =
str(node.data)
+'invisl'
, style =
'invis'
) dot.edge(
str(node.data)
,str
(node.data)
+'invisl'
, style =
'invis'
)#生成空節點invism,讓生成的二叉樹可以分清左右子樹
dot.node(name =
str(node.data)
+'invism'
, lable =
str(node.data)
+'invism'
, style =
'invis'
) dot.edge(
str(node.data)
,str
(node.data)
+'invism'
, style =
'invis'
)if node.right !=
none
: dot.node(name =
str(node.right.data)
, lable =
str(node.right.data)
) dot.edge(
str(node.data)
,str
(node.right.data)
) q.put(node.right)
else
:#生成空節點invisr,讓生成的二叉樹可以分清左右子樹
主要思路是用遞迴生成二叉排序樹,再通過層序遍歷繪製圖形。將需要生成樹的列表傳入binarytree的建構函式,再呼叫drawpic方法輸出。平常c++用的多,python寫的比較爛,大家見諒。
如何在Flutter專案中使用GraphQL
麼是graphql 這篇文章主要是看一下如何在flutter專案中使用graphql,如果不清楚graphql是什麼,建議先看下官網對其介紹 從圖中也能看出,分3部分 可以看出,在這個graphql server中,我們可以查詢 continents continent countries coun...
在python中使用websocket
介紹一款很帥的外掛程式autobahnpython,通過它可以在python中很方便的使用websocket進行通訊 基於twisted框架 這個外掛程式真正強大的地方是它提供了乙個 發布 訂閱模式,具體內容有空再寫,先簡單介紹一下如何建立傳統的連線。建立伺服器 必須的模組 from twisted...
在Python中使用 slots
這篇文章主要介紹了在python中使用 slots 方法的詳細教程,slots 方法是python的乙個重要內建類方法,基於python2.x版本,需要的朋友可以參考下 正常情況下,當我們定義了乙個class,建立了乙個class的例項後,我們可以給該例項繫結任何屬性和方法,這就是動態語言的靈活性。...