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 web基础之加载静态文件实例
Mar 20 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
Apr 19 Python
Python中的CSV文件使用&quot;with&quot;语句的方式详解
Oct 16 Python
python去掉 unicode 字符串前面的u方法
Oct 21 Python
python利用百度AI实现文字识别功能
Nov 27 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
Dec 20 Python
python assert的用处示例详解
Apr 01 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
Feb 23 Python
python获取本周、上周、本月、上月及本季的时间代码实例
Sep 08 Python
基于django和dropzone.js实现上传文件
Nov 24 Python
python3 kubernetes api的使用示例
Jan 12 Python
如何在python中实现ECDSA你知道吗
Nov 23 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
WINDOWS服务器安装多套PHP的另类解决方案
2006/10/09 PHP
PHP新手上路(十三)
2006/10/09 PHP
php把数组值转换成键的方法
2015/07/13 PHP
使用php实现网站验证码功能【推荐】
2017/02/09 PHP
PHP面相对象中的重载与重写
2017/02/13 PHP
PHP中的浅复制与深复制的实例详解
2017/10/26 PHP
改版了网上的一个js操作userdata
2007/04/27 Javascript
JavaScript 实现模态对话框 源代码大全
2009/05/02 Javascript
js数字转换为float,取N位小数
2014/02/08 Javascript
jquery选择器原理介绍($()使用方法)
2014/03/25 Javascript
js控制鼠标事件移动及移出效果显示
2014/10/19 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
BootStrap glyphicon图标无法显示的解决方法
2016/09/06 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
jQuery实现动画、消失、显现、渐出、渐入效果示例
2018/09/06 jQuery
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
python操作ie登陆土豆网的方法
2015/05/09 Python
python爬虫之百度API调用方法
2017/06/11 Python
带你了解python装饰器
2017/06/15 Python
django实现前后台交互实例
2017/08/07 Python
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
python使用Plotly绘图工具绘制散点图、线形图
2019/04/02 Python
Python 如何优雅的将数字转化为时间格式的方法
2019/09/26 Python
python实现图像高斯金字塔的示例代码
2020/12/11 Python
python-图片流传输的思路及示例(url转换二维码)
2020/12/21 Python
材料化学应届生求职信
2013/10/09 职场文书
函授毕业生自我鉴定
2013/11/06 职场文书
2014年社区植树节活动方案
2014/02/28 职场文书
人力资源经理的岗位职责范本
2014/02/28 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
初二学生评语大全
2014/12/26 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
特别篇动画《总之就是非常可爱 ~制服~》PV公开,2022年夏季播出
2022/04/04 日漫