python 二叉排序樹實現

2022-06-16 23:57:12 字數 1512 閱讀 7865

# 節點

class node:

def __init__(self, elem):

self.elem = elem

self.left = none

self.right = none

# 二叉排序樹

class binarysearchtree:

def __init__(self):

self.root = none

def is_empty(self):

return self.root is none

def search(self, node):

''' 採用中序遍歷 '''

if not node:

return

self.search(node.left)

print(node.elem, end=' ')

self.search(node.right)

def insert(self, key):

''' 對於任何乙個節點,右子樹的元素大於等於其本身,左子樹的元素小於其本身 '''

node = node(key)

if self.root is none:

self.root = node

return

cur = self.root

while cur:

if node.elem < cur.elem:

if cur.left is none:

cur.left = node

return

else:

cur = cur.left

elif node.elem >= cur.elem:

if cur.right is none:

cur.right = node

return

else:

cur = cur.right

def delete(self,item):

'''分三種情況:

1.要刪除元素沒有左右子樹,為葉子節點或單獨根節點,只需父節點對應指標為空即可

2.要刪除元素有且只有左右子樹, 只需父節點指標指向對應其子樹節點

3.要刪除元素含左右子樹

'''pass

if __name__ == '__main__':

bst = binarysearchtree()

print(bst.is_empty())

bst.insert(10)

bst.insert(2)

bst.insert(8)

bst.insert(4)

bst.insert(3)

bst.insert(5)

bst.insert(24)

bst.insert(34)

bst.insert(35)

bst.insert(23)

bst.insert(33)

bst.search(bst.root)```

二叉排序樹實現 Python

定義 二叉排序樹或者是空樹,或者滿足以下性質 若它的左子樹不空,則左子樹上所有節點的值均小於根節點的值 若它的右子樹不空,則右子樹上所有節點的值均大於根節點的值 左右子樹又各是一顆二叉排序樹 注 二叉排序樹的中序遍歷為遞增有序序列 資料結構 class node def init self,valu...

python 二叉排序樹

usr bin env python class btnode def init self,data,left,right self.data data self.left left self.right right class btree def init self,root self.root ...

二叉排序樹的實現(python)

二叉排序樹,又叫二叉搜尋樹,二叉查詢樹。二叉搜尋樹中比較複雜的就是刪除操作,我的刪除操作寫的最笨了,比較幼稚,但是對於初學者很容易看懂。看懂了之後再進行優化。因為我也是初學,網上大神的方法看不懂。就自己按照操作寫了乙個 想驗證自己寫的對不對,所以又寫了乙個前序遍歷。class node def in...