1. 题目

给定一棵二叉搜索树,请找出其中第k大的节点。

示例 1:
输入: root = [3,1,4,null,2], k = 13/ \1   4\2
输出: 4示例 2:
输入: root = [5,3,6,2,4,null,null,1], k = 35/ \3   6/ \2   4/1
输出: 4限制:
1 ≤ k ≤ 二叉搜索树元素个数

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

请参考:二叉树遍历循环写法总结

2.1 循环解法

class Solution {public:int kthLargest(TreeNode* root, int k) {//右根左降序遍历stack<TreeNode*> s;while(root || !s.empty()){while(root){s.push(root);root = root->right;}root = s.top();s.pop();k--;if(k==0)return root->val;root = root->left;}return -1;}
};

2.2 递归解法

class Solution {bool found = false;int ans;
public:int kthLargest(TreeNode* root, int k) {dfs(root,k);return ans;}void dfs(TreeNode* root, int& k){if(!root || found)return;dfs(root->right,k);k--;if(k == 0){found = true;ans = root->val;}dfs(root->left,k);}
};

剑指Offer - 面试题54. 二叉搜索树的第k大节点(二叉树循环遍历)相关推荐

  1. 剑指offer面试题54. 二叉搜索树的第k大节点(逆中序遍历)

    题目描述 给定一棵二叉搜索树,请找出其中第k大的节点. 思路 详见链接 代码 class Solution:def kthLargest(self, root:TreeNode, k:int)-> ...

  2. leetcode —— 面试题54. 二叉搜索树的第k大节点

    给定一棵二叉搜索树,请找出其中第k大的节点. 解法一:使用递归和中序遍历 # Definition for a binary tree node. # class TreeNode: # def __ ...

  3. 【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点

    [LeetCode]剑指 Offer 54. 二叉搜索树的第k大节点 文章目录 [LeetCode]剑指 Offer 54. 二叉搜索树的第k大节点 一.中序遍历(提前返回) 一.中序遍历(提前返回) ...

  4. 【刷题-剑指 Offer】 54. 二叉搜索树的第k大节点

    题目 给定一棵二叉搜索树,请找出其中第k大的节点. 我的解法:(中序遍历) /*** Definition for a binary tree node.* public class TreeNode ...

  5. 剑指Offer - 面试题36. 二叉搜索树与双向链表(中序循环/递归)

    1. 题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 特别地,我们希望可以就地完成转换操作.当转化完成以后,树中节点的左指 ...

  6. 剑指Offer - 面试题33. 二叉搜索树的后序遍历序列(递归)

    1. 题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. 参考以下这颗二叉搜索树:5/ \2 6 ...

  7. 剑指offer面试题[27]-二叉搜索树与双向链表

    题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. /* struct TreeNode {int val;struct Tr ...

  8. 剑指offer面试题36. 二叉搜索树与双向链表(中序遍历)(递归)

    题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 思路 详见链接 代码 #class Node: # def __ini ...

  9. 剑指offer面试题33. 二叉搜索树的后序遍历序列(二叉树)(递归)

    题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. 思路 详见链接 代码 class Sol ...

最新文章

  1. 看完后,我才明白 Redis 为什么默认 16 个数据库?
  2. 动态规划 —— 01背包问题
  3. use putty to log on OS
  4. python数据表_第1关:了解python数据表操作
  5. Onedrive云盘程序——OneManager小白设置指南
  6. protobuf windows java_如何通过Eclipse在Windows中构建Protobuf for Java
  7. [Java] 蓝桥杯ADV-202 算法提高 最长公共子序列
  8. SpellGCN: Incorporating Phonological and Visual Similarities intoLanguage Models
  9. mysql 取首字母_MySQL中获取拼音首字母的方法
  10. JAVA实现网页版斗地主_使用Java实现简单的斗地主案例
  11. 编写 USB 存储设备使用痕迹检测和删除工具
  12. edge播放视频HTML5黑屏,edge不能播放网页视频怎么办-修复edge浏览器播放视频黑屏的方法 - 河东软件园...
  13. 滴滴AI负责人叶杰平离职,CTO张博暂时接管
  14. The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path类似问题简单解决方案
  15. 主线程和子线程下的事务不回滚【spring】
  16. 使用winsw发布接口服务
  17. java对象转JSONObject、JSONObject转java对象及String转JSONObject
  18. seaborn 频数统计直方图
  19. 智能座舱域控制器技术发展趋势分析
  20. yapi 全局变量使用_yapi 中 mock JSONP 接口响应的方法

热门文章

  1. 应用层协议:HTTP与HTTPS协议详解、二者的区别
  2. TCP的定时器系列 — 保活定时器(有图有代码有真相!!!)
  3. 一号团队-团队任务3:每日立会(2018-12-01)
  4. github生成SSH公钥
  5. Jquery 常用总结
  6. c++ 线程间通信方式
  7. Linux kernel 中模块化的平台驱动代码介绍
  8. 关于Linux内核代码不使用typedef的讨论?
  9. 分享一个非常 nice 的工具
  10. STM32F4 HAL 库开发报错:Hal_StatusTypeDef is undefined的解决办法