剑指offer-二叉搜索树的第k个结点(python和c++)
题目描述
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
思路:
二叉搜索树按照中序遍历的顺序打印出来正好就是排序好的顺序。
所以,按照中序遍历顺序找到第k个结点就是结果。
python
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:# 返回对应节点TreeNodedef KthNode(self, pRoot, k):# write code here#第三个节点是4#前序遍历5324768#中序遍历2345678#后序遍历2436875#所以是中序遍历,左根右global resultresult=[]self.midnode(pRoot)if k<=0 or len(result)<k:return Noneelse:return result[k-1]def midnode(self,root):if not root:return Noneself.midnode(root.left)result.append(root)self.midnode(root.right)
c++
/*
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};
*/
class Solution {public:TreeNode* KthNodeCore(TreeNode* pRoot, int& k) { TreeNode* target = NULL; if(pRoot->left != NULL) target = KthNodeCore(pRoot->left, k); if(target == NULL) { if(k == 1) target = pRoot; k--; } if(target == NULL && pRoot->right != NULL) target = KthNodeCore(pRoot->right, k); return target; } TreeNode* KthNode(TreeNode* pRoot, int k){if(pRoot == NULL || k == 0) return NULL; return KthNodeCore(pRoot, k); }};
剑指offer-二叉搜索树的第k个结点(python和c++)相关推荐
- 二叉搜索树的第k个节点java_剑指Offer62:二叉搜索树的第k个结点(Java)
思路分析: 首先了解搜索二叉树在中序遍历下的结果是有序的.设一个全局变量num记录次数,每当中序遍历到一个节点时,num++.当num等于k时,返回node即结果. 难在递归上 题目描述 给定一棵二叉 ...
- [剑指offer]二叉搜索树的后序遍历数列
[剑指offer]二叉搜索树的后序遍历数列 剑指offer-二叉搜索树的后序遍历序列 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 fals ...
- C#刷剑指Offer | 二叉搜索树的后序遍历序列
[C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第289篇原创内容 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...
- [剑指offer] 二叉搜索树的后序遍历序列
二叉搜索树的后序遍历序列 P157 题目:输入一个数组,判断这个数组是不是一个二叉搜索树的后序遍历的结果. solution:我们知道后序遍历序列的最后一个item是根节点,如果确实是二叉搜索树的后序 ...
- 剑指offer——二叉搜索树的后序遍历序列
二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 这里遇到的问题就是,传递的子数组怎 ...
- 剑指offer-JZ54 二叉搜索树的第k个节点(附思路)
描述 给定一棵结点数为n 二叉搜索树,请找出其中的第 k 小的TreeNode结点值. 1.返回第k小的节点值即可 2.不能查找的情况,如二叉树为空,则返回-1,或者k大于n等等,也返回-1 3.保证 ...
- 剑指offer:链表中倒数第k个结点 python实现
链表中倒数第k个结点 输入一个链表,输出该链表中倒数第k个结点. 解题思路 暴力求解: 判断链表是否为空: 复制链表,遍历一遍统计其长度: 如果长度小于k.则返回None: 否则,返回其长度-k的链表 ...
- 剑指offer 二叉搜索树的后序遍历
题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...
- 剑指offer——面试题63:二叉搜索树的第k个结点
剑指offer--面试题63:二叉搜索树的第k个结点 Solution1: 20180916重做 /* struct TreeNode {int val;struct TreeNode *left;s ...
- 《剑指Offer》51. 二叉搜索树的第k个结点
题目:51. 二叉搜索树的第k个结点 知识点:二叉搜索树 题目描述: 给定一棵二叉搜索树,请找出其中的第k小的结点.例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为 ...
最新文章
- 神舟台式计算机图片,扩展性媲美台式机!神舟战神K780G拆机图赏
- 比特币官网管理者因支持BCH被建议移交权限
- 北航计算机学硕还是专硕,2018北航计算机专硕总分第一录取经验
- python培训就业班口碑排行榜-Python就业班培训多少钱?老男孩Python收费标准
- 岗位内推 | 阿里巴巴达摩院决策智能实验室招聘全职/实习生
- Xcode 9 新建的工程如何支持 iOS 8
- 什么是parquet文件?
- 01.elasticsearch-mapping全面解析
- QT 003 stack widget 层叠菜单的使用 - 6-04正在编辑中
- Mr.J--HanioTower(递归算法)
- 获取文件夹以及子文件夹里面的所有文件
- 10种进阶方法让你快速测试端口连通性
- **JAVA实习周记(第一周):任何的浮躁都是阻碍**
- Java的sort用法深究,compare按照姓氏排序
- 客户心声 | 四川省人社厅杨玉成一行充分肯定桂溪街道劳动保障工作信息化建设平台
- c++ 原子操作 赋值_请问c++如何实现原子性操作?
- C语言C++图形库---贪吃蛇大作战【附源码】
- 统计源期刊《国际医学放射学杂志》
- WPS 查找历史版本记录
- 中文最全停用词表(可以直接复制)
热门文章
- 2021年江苏省高考成绩排名查询,2021年江苏高考分数一分一段位次表,江苏高考个人成绩排名查询方法...
- 贪吃小怪物显示服务器人数爆满,贪吃小怪物进不去怎么办 贪吃小怪物为什么进不去...
- openGauss数据库源码解析系列文章——存储引擎源码解析(四)
- 基于Vue+Java实现的在线聊天APP系统设计与实现
- 《图解经济学》读后感
- 汽车通信协议:一文搞懂Flexray通信
- 一个人的赛道——天数智芯在AI计算领域的突围
- 责任链模式在SpringAOP中的使用
- GObject对象系统
- 编程之美之一摞烙饼的排序1