python实现二叉查找树实例代码


Posted in Python onFebruary 08, 2018

本文研究的主要是python实现二叉查找树的相关内容,具体介绍及实现如下。

1. 二叉查找树的定义:

左子树不为空的时候,左子树的结点值小于根节点,右子树不为空时,右子树的结点值大于根节点,左右子树分别为二叉查找树

2. 二叉查找树的最左边的结点即为最小值,要查找最小值,只需遍历左子树的结点直到为空为止,同理,最右边的结点结尾最大值,要查找最大值,只需遍历右子树的结点直到为空为止。二叉查找树的插入查找和删除都是通过递归的方式来实现的,删除一个结点的时候,先找到这个结点S,如果这个结点左右孩子都不为空,这时并不是真正的删除这个结点S,而是在其右子树找到后继结点,将后继结点的值付给S,然后删除这个后继结点即可。如果结点S的左孩子或者右孩子为空,可以直接删除这个结点S。

3. 二叉查找树的python实现:

class TreeNode: 
  def __init__(self,val): 
    self.val=val; 
    self.left=None; 
    self.right=None; 
def insert(root,val): 
  if root is None: 
    root=TreeNode(val); 
  else: 
    if val<root.val: 
      root.left=insert(root.left,val);  #递归地插入元素 
    elif val>root.val: 
      root.right=insert(root.right,val);  
  return root; 
 
def query(root,val): 
  if root is None: 
    return ; 
  if root.val is val: 
    return 1; 
  if root.val <val: 
    return query(root.right,val); #递归地查询 
  else:  
    return query(root.left,val); 
def findmin(root): 
  if root.left: 
    return findmin(root.left); 
  else: 
    return root; 
   
def delnum(root,val): 
  if root is None: 
    return ; 
  if val<root.val: 
    return delnum(root.left,val); 
  elif val>root.val: 
    return delnum(root.right,val); 
  else:                       # 删除要区分左右孩子是否为空的情况 
    if(root.left and root.right): 
       
      tmp=finmin(root.right);       #找到后继结点 
      root.val=tmp.val; 
      root.right=delnum(root.right,val);  #实际删除的是这个后继结点 
       
    else: 
      if root.left is None: 
        root=root.right; 
      elif root.right is None: 
        root=root.left; 
  return root; 
         
         
#测试代码       
root=TreeNode(3); 
root=insert(root,2); 
root=insert(root,1); 
root=insert(root,4); 
 
#print query(root,3); 
print query(root,1); 
root=delnum(root,1); 
print query(root,1);

结果:

1
None
>>>

总结

以上就是本文关于python实现二叉查找树实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
使用python开发vim插件及心得分享
Nov 04 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
Dec 08 Python
python高手之路python处理excel文件(方法汇总)
Jan 07 Python
Python实现随机选择元素功能
Sep 14 Python
Python 使用元类type创建类对象常见应用详解
Oct 17 Python
Python进程池Pool应用实例分析
Nov 27 Python
python实现拼图小游戏
Feb 22 Python
python数字类型math库原理解析
Mar 02 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
Mar 02 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
Jun 18 Python
python3实现Dijkstra算法最短路径的实现
May 12 Python
如何解决.cuda()加载用时很长的问题
May 24 Python
单链表反转python实现代码示例
Feb 08 #Python
Python测试人员需要掌握的知识
Feb 08 #Python
python实现单向链表详解
Feb 08 #Python
Python生成器以及应用实例解析
Feb 08 #Python
代码分析Python地图坐标转换
Feb 08 #Python
python爬虫中get和post方法介绍以及cookie作用
Feb 08 #Python
Python OpenCV 直方图的计算与显示的方法示例
Feb 08 #Python
You might like
php使用curl发送json格式数据实例
2013/12/17 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
2019/03/06 PHP
PHP实现获取文件mime类型多种方法解析
2020/05/28 PHP
prototype 中文参数乱码解决方案
2009/11/09 Javascript
基于JQuery制作的产品广告效果
2010/12/08 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
js 限制input只能输入数字、字母和汉字等等
2013/12/18 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
利用Node.js编写跨平台的spawn语句详解
2017/02/12 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
node.js中debug模块的简单介绍与使用
2017/04/25 Javascript
nodejs实现连接mongodb数据库的方法示例
2018/03/15 NodeJs
Mac下安装vue
2018/04/11 Javascript
Node.js的Koa实现JWT用户认证方法
2018/05/05 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
2018/11/22 Javascript
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
2019/04/10 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
2019/11/26 Javascript
vue项目中监听手机物理返回键的实现
2020/01/18 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
[01:45]亚洲邀请赛互动指南虚拟物品介绍
2015/01/30 DOTA
python实现将元祖转换成数组的方法
2015/05/04 Python
Python利用公共键如何对字典列表进行排序详解
2018/05/19 Python
python中有关时间日期格式转换问题
2019/12/25 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
利用CSS3实现折角效果实例源码
2016/09/28 HTML / CSS
解释一下钝化(Swap out)
2016/12/26 面试题
Overload和Override的区别
2012/09/02 面试题
请说出这段代码执行后a和b的值分别是多少
2015/03/28 面试题
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
采购主管的岗位职责
2013/12/17 职场文书
《口技》教学反思
2014/02/21 职场文书
自我鉴定书
2014/03/24 职场文书
3.15消费者权益日活动总结
2015/02/09 职场文书