Python 資料結構與演算法 二叉搜尋樹的實現

2021-07-10 16:44:46 字數 1261 閱讀 1998

class tree:本身自然需要維護根節點(root),用於指向樹的第乙個節點

class

tree:

root = none

class node:每乙個節點都要維護左子樹、右子樹

class

node:

lft = none

rgt = none

一棵二叉搜尋樹最為重要的兩個使命是:插入和搜尋,插入最終返回的是當前節點。

class

node:

lft = none

rgt = none

def__init__

(self, key, val):

self.key = key

self.val = val

definsert

(node, key, value):

# 返回插入後的節點

if node: return new node(key, value)

if node.key < key:

return insert(node.rgt, key, value)

return insert(node.lft, key, value)

defsearch

(node, key):

if node is

none: raise keyerror

if node.key == key:

return node.val

if node.key < key:

return search(node.rgt, key)

return search(node.lft, key)

class

tree:

root = none

def__getitem__

(self, key):

return search(self.root, key)

def__setitem__

(self, key, value):

insert(self.root, key, value)

def__contains__

(self, key):

try:

search(self.root, key)

return

true

except keyerror:

return

false

資料結構與演算法 二叉堆

核心操作是sift up,和sift down,其他所有操作都是建立在這兩個核心操作的基礎上的,事實上所有的堆結構都可以使用這兩個操作。const int maxsize 10001 int size 0 int min heap maxsize 0號單元不使用,因為如果使用0單元,則k 2無法找到...

資料結構與演算法 二叉堆

二叉堆本質上是一種完全的二叉樹,它分為兩個型別。1.最大堆 2.最小堆 什麼是最大堆?最大堆的任何乙個父節點的值,都大於或等於它左 右孩子節點的值。什麼是最小堆?最小堆的任何乙個父節點的值,都小於或等於它左 右孩子節點的值。二叉堆的根節點叫做堆頂。最大堆和最小堆的特點決定了 最大堆的堆頂是整個堆中的...

資料結構與演算法(python) 優先佇列和二叉堆

參考自 mooc資料結構與演算法python版 二 二叉堆的實現 佇列有一種變體稱為 優先佇列 優先佇列的出隊跟佇列一樣從隊首出隊,但在優先佇列內部,資料項的次序卻是由 優先順序 來確定 高優先順序的資料項排在隊首,而低優先順序的資料項則排在後面。這樣,優先佇列的入隊操作就比較複雜,需要將資料項根據...