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中__init__()方法的高级应用
May 11 Python
再谈Python中的字符串与字符编码(推荐)
Dec 14 Python
python如何获取服务器硬件信息
May 11 Python
如何使用VSCode愉快的写Python于调试配置步骤
Apr 06 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
Jun 20 Python
dataframe 按条件替换某一列中的值方法
Jan 29 Python
Python实现堡垒机模式下远程命令执行操作示例
May 09 Python
使用python将多个excel文件合并到同一个文件的方法
Jul 09 Python
Python如何调用外部系统命令
Aug 07 Python
python 采用paramiko 远程执行命令及报错解决
Oct 21 Python
Python序列化pickle模块使用详解
Mar 05 Python
用Python爬取英雄联盟的皮肤详细示例
Dec 06 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
动态网站web开发 PHP、ASP还是ASP.NET
2006/10/09 PHP
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
2011/05/29 PHP
php数组中包含中文的排序方法
2014/06/03 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
JavaScript中的History历史对象
2008/01/16 Javascript
jQuery Dialog 弹出层对话框插件
2010/08/09 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
css+js实现部分区域高亮可编辑遮罩层
2014/03/04 Javascript
jquery禁用右键示例
2014/04/28 Javascript
原生javascript实现隔行换色
2015/01/04 Javascript
JS中生成随机数的用法及相关函数
2016/01/09 Javascript
详解nodejs微信公众号开发——5.素材管理接口
2017/04/11 NodeJs
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
2017/11/28 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
Angular中sweetalert弹框的基本使用教程
2018/07/22 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
2019/01/10 Javascript
使用webpack5从0到1搭建一个react项目的实现步骤
2020/12/16 Javascript
Python函数可变参数定义及其参数传递方式实例详解
2015/05/25 Python
Python基于pygame实现图片代替鼠标移动效果
2015/11/11 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
2018/12/16 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
2020/02/17 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
2020/11/24 Python
python palywright库基本使用
2021/01/21 Python
CSS3的RGBA中关于整数和百分比值的转换
2015/08/04 HTML / CSS
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
安全检查与奖惩制度
2014/01/23 职场文书
《美丽的田园》教学反思
2014/03/01 职场文书
征婚广告词
2014/03/17 职场文书
请假条格式范文
2014/04/10 职场文书
晋江市人民政府党组群众路线教育实践活动整改方案
2014/10/25 职场文书
医药公司开票员岗位职责
2015/04/15 职场文书