日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python实现二叉搜索树_python实现二叉查找树

發布時間:2024/4/13 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python实现二叉搜索树_python实现二叉查找树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這次用完成的是二叉樹,是一種簡單的樹型結構。同樣使用python實現 多的不說了,上代碼吧。

# -*- coding: cp936 -*-

#---------------------------------------------

#

# author chile

# version 1.0

# date 2014-02-17

# desc 二叉樹

#

#

#

#---------------------------------------------

class bintree:

def __init__(self):

self.root = None

# 前驅節點

def treePredecessor(self,entry):

if entry.left != None:

return self.maxTree(entry.left)

preNode = entry.parent

tempNode = entry

while preNode != None and preNode.right.value != entry.value:

tempNode = preNode

preNode = preNode.parent

return preNode

#后繼節點

def treeSuccessor(self,entry):

if entry.right != None:

return self.minTree(entry.right)

preNode = entry.parent

tempNode = entry

while preNode != None and preNode.left.value != entry.value:

tempNode = preNode

preNode = preNode.parent

return preNode

def add(self,value):

tempNode = self.root

parentNode = None

entry = bintree.entry(value = value)

while tempNode != None:

parentNode = tempNode

if cmp(value,parentNode.value) < 0:

tempNode = tempNode.left

else:

tempNode = tempNode.right

if parentNode == None:

self.root = entry

elif cmp(value,parentNode.value) < 0:

parentNode.left = entry

entry.parent = parentNode

else:

parentNode.right = entry

entry.parent = parentNode

#這里刪除是全部刪除節點(包括所有子節點)

def remove(self,value):

root = self.root

parentNode = None

if value == root.value:

root.left = None

root.right = None

while root != None:

parentNode = root.parent

if value == root.value:

root.left = None

root.right = None

if parentNode.left != None and parentNode.left.value == value:

parentNode.left = None

break

else:

parentNode.right = None

break

elif cmp(value,root.value) < 0:

root = root.left

else:

root = root.right

#查找節點

def search(self,value):

root = self.root

while root != None and root.value != value:

if cmp(value,root.value) < 0:

root = root.left

else:

root = root.right

return root

#最小值的節點,其實就是找左邊的葉子節點

def minTree(self,root):

entry = root

while entry.left != None:

entry = entry.left

return entry

#最大值的節點

def maxTree(self,root):

entry = root

while entry.right != None:

entry = entry.right

return entry

#中序遍歷

def iterator(self,root):

if root != None:

self.iterator(root.left)

print root.value

self.iterator(root.right)

class entry:

def __init__(self, value=None):

self.left = None

self.right = None

self.parent = None

self.value = value

arr = [15,5,3,12,10,13,6,7,16,20,18,23]

tree = bintree()

for val in arr:

tree.add(val)

tree.iterator(tree.root)

node = tree.search(16)

print node.left , node.right , node.parent.value

print tree.maxTree(node).value

print tree.treePredecessor(node).value

print tree.treeSuccessor(node).value

#print tree.maxTree() , tree.minTree()

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的python实现二叉搜索树_python实现二叉查找树的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。