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脚本实现DNSPod DNS动态解析域名
Feb 14 Python
python连接远程ftp服务器并列出目录下文件的方法
Apr 01 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
Jan 20 Python
Python中的浮点数原理与运算分析
Oct 12 Python
新手入门Python编程的8个实用建议
Jul 12 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
Sep 04 Python
更新升级python和pip版本后不生效的问题解决
Apr 17 Python
idea2020手动安装python插件的实现方法
Jul 17 Python
详解python命令提示符窗口下如何运行python脚本
Sep 11 Python
Python classmethod装饰器原理及用法解析
Oct 17 Python
利用python爬取有道词典的方法
Dec 08 Python
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
Apr 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
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
PHP实现PDO的mysql数据库操作类
2014/12/12 PHP
浅谈php中include文件变量作用域
2015/06/18 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
使用Modello编写JavaScript类
2006/12/22 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
js substring从右边获取指定长度字符串(示例代码)
2013/12/23 Javascript
AngularJS基础教程之简单介绍
2015/09/27 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
2016/09/14 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
简单实现jQuery轮播效果
2017/08/18 jQuery
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
JavaScript EventEmitter 背后的秘密 完整版
2018/03/29 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
2019/04/04 Javascript
解决vue请求接口第一次成功,第二次失败问题
2020/09/08 Javascript
Python输出9*9乘法表的方法
2015/05/25 Python
Django的session中对于用户验证的支持
2015/07/23 Python
python实现简单购物商城
2016/05/21 Python
python编码总结(编码类型、格式、转码)
2016/07/01 Python
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
python入门教程 python入门神图一张
2018/03/05 Python
Python简单实现网页内容抓取功能示例
2018/06/07 Python
几行Python代码爬取3000+上市公司的信息
2019/01/24 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
2019/05/15 Python
Python request操作步骤及代码实例
2020/04/13 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
Asics日本官网:鬼冢八喜郎创立的跑鞋运动品牌
2017/10/18 全球购物
英国家喻户晓的高街品牌:River Island
2017/11/28 全球购物
澳大利亚儿童鞋在线:The Trybe
2019/07/16 全球购物
英国排名第一的停车场运营商:NCP
2019/08/26 全球购物
小学生感恩老师演讲稿
2014/08/28 职场文书
工伤事故证明
2014/10/20 职场文书
2016入党心得体会范文
2016/01/06 职场文书
Python何绘制带有背景色块的折线图
2022/04/23 Python