# 節點
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...