Python实现查找二叉搜索树第k大的节点功能示例


Posted in Python onJanuary 24, 2019

本文实例讲述了Python实现查找二叉搜索树第k大的节点功能。分享给大家供大家参考,具体如下:

题目描述

给定一个二叉搜索树,找出其中第k大的节点

Python实现查找二叉搜索树第k大的节点功能示例

就是一个中序遍历的过程,不需要额外的数组,便利到节点之后,k减一就行。

代码1

class TreeNode:
  def __init__(self, x):
    self.val = x
    self.left = None
    self.right = None
class Solution:
  def __init__(self):
    self.k = 0
  def recursionKthNode(self, Root):
    result = None
    if result == None and Root.left:
      result = self.recursionKthNode(Root.left)
    if result == None:
      if self.k == 1:
        return Root
      self.k -= 1
    if result == None and Root.right:
      result = self.recursionKthNode(Root.right)
    return result
  def KthNode(self, Root, k):
    if Root == None:
      return None
    self.k = k
    return self.recursionKthNode(Root)
Root = TreeNode(5)
Root.left = TreeNode(3)
Root.left.left = TreeNode(2)
Root.left.right = TreeNode(4)
Root.right = TreeNode(7)
Root.right.left = TreeNode(6)
Root.right.right = TreeNode(8)
print(Solution().KthNode(Root,3).val)

output : 4

代码2

class TreeNode:
  def __init__(self, x):
    self.val = x
    self.left = None
    self.right = None
class Solution:
  def __init__(self):
    self.k = 0
  def InOrder(self, Root):
    ans = None
    if Root:
      if ans == None and Root.left:
        ans = self.InOrder(Root.left)  #往左遍历
      if ans == None and self.k == 1:
        ans = Root           #遍历到目标节点
      if ans == None and self.k != 1:   #没有遍历到目标节点,k--
        self.k -= 1
      if ans == None and Root.right:   #往右遍历
        ans = self.InOrder(Root.right)
    return ans
  def KthNode(self, Root, k):
    if Root == None or k <= 0:
      return None
    self.k = k
    return self.InOrder(Root)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python实现在线程里运行scrapy的方法
Apr 07 Python
修改Python的pyxmpp2中的主循环使其提高性能
Apr 24 Python
Python处理JSON时的值报错及编码报错的两则解决实录
Jun 26 Python
Python实现抓取网页生成Excel文件的方法示例
Aug 05 Python
Python实现读取txt文件并画三维图简单代码示例
Dec 09 Python
Python基于SMTP协议实现发送邮件功能详解
Aug 14 Python
python 函数中的内置函数及用法详解
Jul 02 Python
Python中拆分字符串的操作方法
Jul 23 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
Jan 14 Python
Keras load_model 导入错误的解决方式
Jun 09 Python
python中get和post有什么区别
Jun 19 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
Nov 30 Python
几行Python代码爬取3000+上市公司的信息
Jan 24 #Python
python安装pywin32clipboard的操作方法
Jan 24 #Python
Python中extend和append的区别讲解
Jan 24 #Python
对python pandas读取剪贴板内容的方法详解
Jan 24 #Python
Python3按一定数据位数格式处理bin文件的方法
Jan 24 #Python
Python使用post及get方式提交数据的实例
Jan 24 #Python
在python中利用opencv简单做图片比对的方法
Jan 24 #Python
You might like
《心理测量者3》剧场版动画预告
2020/03/02 日漫
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
php cookie的操作实现代码(登录)
2010/12/29 PHP
PHP中用hash实现的数组
2011/07/17 PHP
php判断正常访问和外部访问的示例
2014/02/10 PHP
php封装的图片(缩略图)处理类完整实例
2016/10/19 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
JavaScript中Array 对象相关的几个方法
2006/12/22 Javascript
使用JQuery和CSS模拟超链接的用户单击事件的实现代码
2012/05/23 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
2016/05/25 Javascript
vue 请求后台数据的实例代码
2017/06/22 Javascript
vue组件间的参数传递实例详解
2019/04/26 Javascript
Vue实现点击显示不同图片的效果
2019/08/10 Javascript
在vue-cli中引入lodash.js并使用详解
2019/11/13 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
简单谈谈python中的多进程
2016/11/06 Python
python实现批量修改文件名代码
2017/09/10 Python
python+opencv实现动态物体追踪
2018/01/09 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
在ubuntu16.04中将python3设置为默认的命令写法
2018/10/31 Python
使用PIL(Python-Imaging)反转图像的颜色方法
2019/01/24 Python
解决Python3 抓取微信账单信息问题
2019/07/19 Python
Python日期格式和字符串格式相互转换的方法
2020/02/18 Python
Python爬虫HTPP请求方法有哪些
2020/06/03 Python
Volcom英国官方商店:美国殿堂级滑板、冲浪、滑雪服装品牌
2019/03/13 全球购物
数据库测试通常都包括哪些方面
2015/11/30 面试题
应届毕业生自我评价分享
2013/12/15 职场文书
大学生学习党课思想汇报
2014/01/03 职场文书
客户服务经理岗位职责
2014/01/29 职场文书
做人民满意的公务员活动方案
2014/08/25 职场文书
乡镇党员群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
2014最新自愿离婚协议书范本
2014/11/19 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书