python實現非平衡二叉樹
class streenode:
def __init__(self, key, val):
self.right = None
self.left = None
self.key = key
self.val = val
def __str__(self):
return str((self.key,self.val))
class searchtree(object):
def __init__(self, key, val):
self.root = streenode(key, val)
def insert(self, key, val):
node = self.root
while node:
if key > node.key:
parent = node
node = node.right
elif key == node.key:
node.val = val
return
else:
parent = node
node = node.left
node = streenode(key, val)
if key > parent.key:
parent.right = node
else:
parent.left = node
def delete(self, key):
node, parent, kind = self.get(key)
if node == None:
return
if node.right!=None and node.left!=None:
minnode = 外匯跟單gendan5.comself.getmin(node.right)
minkey = minnode.key
minval = minnode.val
self.delete(minnode.key)
node.key = minkey
node.val = minval
elif node.right==None and node.left==None:
if kind == "left":
parent.left = None
elif kind == "self":
self.root = None
else:
parent.right = None
del node
else:
if kind == "left":
parent.left = node.right if node.right else node.left
elif kind == "self":
self.root = node.right if node.right else node.left
else:
parent.right = node.right if node.right else node.left
del node
def get(self, key):
node = self.root
kind = "self"
parent = None
while(node):
if key > node.key:
parent = node
kind = "right"
node = node.right
elif key == node.key:
return node, parent, kind
else:
parent = node
kind = "left"
node = node.left
return None, None, None
def getmin(self, root):
if root.left == None:
return root
return self.getmin(root.left)
def inorder(self, root):
if root == None:
return
self.inorder(root.left)
print(root)
self.inorder(root.right)
def preorder(self, root):
if root == None:
return
print(root)
self.preorder(root.left)
self.preorder(root.right)
def postorder(self, root):
if root == None:
return
self.postorder(root.left)
self.postorder(root.right)
print(root)
a = searchtree(4.5,"a")
a.insert(2,"a")
a.insert(3,"a")
a.insert(4,"a")
a.insert(4.2,"a")
a.insert(4.1,"a")
a.insert(4.7,"a")
a.insert(5,"a")
a.insert(8,"a")
a.insert(9,"a")
a.delete(4)
a.delete(4.5)
a.inorder(a.root)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2785715/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java實現紅黑樹(平衡二叉樹)Java二叉樹
- 平衡二叉樹(AVL樹)和 二叉排序樹轉化為平衡二叉樹 及C語言實現二叉樹排序C語言
- 二叉平衡樹 python 列表 遞迴Python遞迴
- 24. 平衡二叉樹,及其程式碼實現二叉樹
- 平衡二叉樹二叉樹
- [Python手撕]判斷平衡二叉樹Python二叉樹
- 排序二叉樹和平衡二叉樹排序二叉樹
- 平衡二叉樹(AVL)二叉樹
- 手擼二叉樹——AVL平衡二叉樹二叉樹
- 平衡二叉樹,B樹,B+樹二叉樹
- 刷題系列 - Python用非遞迴實現二叉樹前序遍歷Python遞迴二叉樹
- 110. 平衡二叉樹二叉樹
- 二叉樹的所有遍歷非遞迴實現二叉樹遞迴
- 刷題系列 - Python用非遞迴實現二叉樹後續遍歷Python遞迴二叉樹
- 刷題系列 - Python用非遞迴實現二叉樹中序遍歷Python遞迴二叉樹
- python實現二叉樹及其七種遍歷方式(遞迴+非遞迴)Python二叉樹遞迴
- 平衡樹和二叉樹的區別二叉樹
- 平衡二叉樹(AVL樹),原來如此!!!二叉樹
- 平衡二叉查詢樹:紅黑樹
- 十三、Mysql之平衡二叉樹(AVL樹)MySql二叉樹
- Java 樹結構實際應用 四(平衡二叉樹/AVL樹)Java二叉樹
- 二叉搜尋樹的python實現Python
- 資料結構高階--AVL(平衡二叉樹)(圖解+實現)資料結構二叉樹圖解
- 二叉堆、BST 與平衡樹
- LeetCode-110-平衡二叉樹LeetCode二叉樹
- JZ-039-平衡二叉樹二叉樹
- 滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹(二叉查詢樹)和最優二叉樹二叉樹
- Python實現二叉樹的增、刪、查Python二叉樹
- 二叉樹實現二叉樹
- 程式碼隨想錄——二叉樹-12.平衡二叉樹二叉樹
- 每日一練(28):平衡二叉樹二叉樹
- 資料結構-平衡二叉樹資料結構二叉樹
- 自動平衡二叉樹的構建-AVL樹二叉樹
- 什麼是遍歷二叉樹,JavaScript實現二叉樹的遍歷(遞迴,非遞迴)二叉樹JavaScript遞迴
- Python 樹表查詢_千樹萬樹梨花開,忽如一夜春風來(二叉排序樹、平衡二叉樹)Python排序二叉樹
- 用Python實現二叉樹的增、刪、查Python二叉樹
- 二叉樹的插入和搜尋–python實現二叉樹Python
- 學習筆記——二叉平衡樹(BST)筆記