题目描述

给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。
思路:二叉搜索树的中序遍历是递增的序列,使用循环的中序遍历找到第k个节点就行了,对中序遍历的循环版本没理解,使用一个stack,找到最左边的节点,所以初始化的时候首先初始化节点,stack要为空。计数的cnt要初始化为0。不清楚的话就一个节点的时候判断一下,然后p = p->right,不需要判断为空,因为为空的话,上面的循环不会进入。
/*
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};
*/
class Solution {
public:TreeNode* KthNode(TreeNode* pRoot, int k){if(pRoot == nullptr){return nullptr;}stack<TreeNode*> s;  //s.push(pRoot);TreeNode* p = pRoot;int cnt = 0;while(!s.empty() || p != nullptr){while(p != nullptr){s.push(p);p = p->left;}if(!s.empty()){p = s.top();s.pop();                ++cnt;if(cnt == k){return p;}                 p = p->right; }}return nullptr;}
};

转载于:https://www.cnblogs.com/dingxiaoqiang/p/8310982.html

61二叉搜索树的第k个结点相关推荐

  1. 牛客题霸 [二叉搜索树的第k个结点]C++题解/答案

    牛客题霸 [二叉搜索树的第k个结点]C++题解/答案 题目: 给定一棵二叉搜索树,请找出其中的第k小的结点. 题解: 二叉搜索树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它 ...

  2. 剑指offer——面试题63:二叉搜索树的第k个结点

    剑指offer--面试题63:二叉搜索树的第k个结点 Solution1: 20180916重做 /* struct TreeNode {int val;struct TreeNode *left;s ...

  3. 《剑指Offer》51. 二叉搜索树的第k个结点

    题目:51. 二叉搜索树的第k个结点 知识点:二叉搜索树 题目描述: 给定一棵二叉搜索树,请找出其中的第k小的结点.例如, (5,3,7,2,4,6,8)    中,按结点数值大小顺序第三小结点的值为 ...

  4. 剑指offer:二叉搜索树的第k个结点(中序遍历)

    1. 题目描述 /*给定一棵二叉搜索树,请找出其中的第k小的结点.例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4. */ 2. 思路 中序遍历二叉搜索树,第K个就是结 ...

  5. 二叉搜索树的第k个节点java_剑指Offer62:二叉搜索树的第k个结点(Java)

    思路分析: 首先了解搜索二叉树在中序遍历下的结果是有序的.设一个全局变量num记录次数,每当中序遍历到一个节点时,num++.当num等于k时,返回node即结果. 难在递归上 题目描述 给定一棵二叉 ...

  6. 二叉搜索树的第k个结点

    2019独角兽企业重金招聘Python工程师标准>>> 题目描述 给定一颗二叉搜索树,请找出其中的第k大的结点.例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值 ...

  7. 60、二叉搜索树的第k个结点

    一.题目 给定一颗二叉搜索树,请找出其中的第k大的结点.例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4. 二.解法 1 package algorit ...

  8. 剑指offer之二叉搜索树的第K个结点

    题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点.例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4. 解题思路 二叉搜索树的中序遍历是顺序结构,利用中序遍历即可求 ...

  9. NC81 二叉搜索树的第k个结点

    和力扣的230很相似,不过230是返回val值,这道题是返回结点 喵! 方法1 1.利用BST的性质,中序遍历为升序. 2.定义全局的 count(用于计数) 和 res结点(用于接收结点) 3.定义 ...

最新文章

  1. python装饰设备_Python: 装饰器的小例子
  2. CVPR2020检测类论文最全汇总:136篇论文方向细分(附代码和论文打包下载)
  3. 使用auditd监控Linux的文件变化
  4. Unity UGUI - Canvas / Camera
  5. 2个网页跳来跳去_成为搜索产品经理(2):认识网络爬虫
  6. SpringBoot核心注解介绍
  7. 【第一期】史上最全电子漫画合集,收藏了。
  8. 案例解读:RMAN 备份控制文件报错 ORA-00230
  9. Android 小技巧-- TextView与EditText 同步显示
  10. 如何保证进程间同步工作_如何在工作自动化进程中占据优势?开关电源芯片U6605D有答案...
  11. 最常见的Linux用户程序异常----Segment Fault
  12. 反射--笔记(第一篇)
  13. 修改msde登录方式,设置sa密码为空
  14. Ubuntu安装vmPlayer
  15. 巴特沃斯低通滤波器 matlab,基于MATLAB做巴特沃斯低通滤波器..doc
  16. 微端服务器添加文件,微端服务器配置
  17. 如何判断一个APP页面是原生的还是H5页面
  18. LeetCode 1240. Tiling a Rectangle with the Fewest Squares
  19. 个人关于颈椎病治疗和保养的一些经验总结!
  20. Linux虚拟机下FTP服务器的搭建(详细)

热门文章

  1. f12获取网页文本_8招教你快速搞定网页内容禁止复制粘贴,想怎么复制就怎么复制...
  2. unity怎么制作云飘动_Unity 如何制作星空粒子效果?
  3. matlab fftshift_数字信号处理没有Matlab?用Python一样很爽
  4. html无损转换pdf,Pdf2html :高保真PDF至HTML转换
  5. linq from 多个sum_快手重拳打击劣质电商 7月以来封禁700多个团伙账号
  6. SCI论文写作训练营笔记汇总01_概述+文献检索与管理
  7. python如何读取字典的关键字_python提取字典key列表的方法
  8. LeetCode 900. RLE 迭代器(模拟/二分查找)
  9. 程序员面试金典 - 面试题 03.05. 栈排序(两栈)
  10. LeetCode 93. 复原IP地址(回溯)