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的Django框架编写从Google Adsense中获得报表的应用
Apr 17 Python
Python检测网站链接是否已存在
Apr 07 Python
python 字符串转列表 list 出现\ufeff的解决方法
Jun 22 Python
Python中pip更新和三方插件安装说明
Jul 08 Python
pytorch训练imagenet分类的方法
Jul 27 Python
Python 正则表达式匹配字符串中的http链接方法
Dec 25 Python
对python:循环定义多个变量的实例详解
Jan 20 Python
基于Python实现用户管理系统
Feb 26 Python
python异常处理和日志处理方式
Dec 24 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
Mar 06 Python
python爬虫数据保存到mongoDB的实例方法
Jul 28 Python
Python的Tqdm模块实现进度条配置
Feb 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
php5.5中类级别的常量使用介绍
2013/10/02 PHP
CI框架开发新浪微博登录接口源码完整版
2014/05/28 PHP
php数组索引与键值操作技巧实例分析
2015/06/24 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
php利用array_search与array_column实现二维数组查找
2019/07/08 PHP
PHP论坛实现积分系统的思路代码详解
2020/06/01 PHP
来自chinaz的ajax获取评论代码
2008/05/03 Javascript
让Firefox支持event对象实现代码
2009/11/07 Javascript
javascript模拟的Ping效果代码 (Web Ping)
2011/03/13 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
2017/04/23 Javascript
vue.js中mint-ui框架的使用方法
2017/05/12 Javascript
使用 Node.js 对文本内容分词和关键词抽取
2017/05/27 Javascript
angularjs实现柱状图动态加载的示例
2017/12/11 Javascript
JS实现点击复选框变更DIV显示状态的示例代码
2017/12/18 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
gulp构建小程序的方法步骤
2019/05/31 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
vue 根据选择条件显示指定参数的例子
2019/11/09 Javascript
mpvue微信小程序开发之实现一个弹幕评论
2019/11/24 Javascript
js实现时分秒倒计时
2019/12/03 Javascript
[01:05:24]Ti4 冒泡赛第二天 iG vs NEWBEE 3
2014/07/15 DOTA
Python中pip更新和三方插件安装说明
2018/07/08 Python
python 在某.py文件中调用其他.py内的函数的方法
2019/06/25 Python
python中时间、日期、时间戳的转换的实现方法
2019/07/06 Python
python Django的web开发实例(入门)
2019/07/31 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
精神文明建设先进工作者事迹材料
2014/05/02 职场文书
我爱我校演讲稿
2014/05/21 职场文书
防火标语大全
2014/10/06 职场文书
11.9消防日宣传标语
2014/10/08 职场文书
缓刑人员思想汇报
2014/10/11 职场文书
物资采购管理制度
2015/08/06 职场文书
小学班级口号大全
2015/12/25 职场文书