最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

python实现二叉查找树

来源:动视网 责编:小采 时间:2020-11-27 14:27:27
文档

python实现二叉查找树

python实现二叉查找树:# -*- coding: cp936 -*- #--------------------------------------------- # # author chile # version 1.0 # date 2014-02-17 # desc 二叉树 # # # #--------------------------------------------- class bintree: def __init__(self): self.root = None # 前驱
推荐度:
导读python实现二叉查找树:# -*- coding: cp936 -*- #--------------------------------------------- # # author chile # version 1.0 # date 2014-02-17 # desc 二叉树 # # # #--------------------------------------------- class bintree: def __init__(self): self.root = None # 前驱


# -*- 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()

文档

python实现二叉查找树

python实现二叉查找树:# -*- coding: cp936 -*- #--------------------------------------------- # # author chile # version 1.0 # date 2014-02-17 # desc 二叉树 # # # #--------------------------------------------- class bintree: def __init__(self): self.root = None # 前驱
推荐度:
标签: 实现 python 二叉树
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top