剑指Offer - 面试题54. 二叉搜索树的第k大节点(二叉树循环遍历)
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大节点(二叉树循环遍历)相关推荐
- 剑指offer面试题54. 二叉搜索树的第k大节点(逆中序遍历)
题目描述 给定一棵二叉搜索树,请找出其中第k大的节点. 思路 详见链接 代码 class Solution:def kthLargest(self, root:TreeNode, k:int)-> ...
- leetcode —— 面试题54. 二叉搜索树的第k大节点
给定一棵二叉搜索树,请找出其中第k大的节点. 解法一:使用递归和中序遍历 # Definition for a binary tree node. # class TreeNode: # def __ ...
- 【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点
[LeetCode]剑指 Offer 54. 二叉搜索树的第k大节点 文章目录 [LeetCode]剑指 Offer 54. 二叉搜索树的第k大节点 一.中序遍历(提前返回) 一.中序遍历(提前返回) ...
- 【刷题-剑指 Offer】 54. 二叉搜索树的第k大节点
题目 给定一棵二叉搜索树,请找出其中第k大的节点. 我的解法:(中序遍历) /*** Definition for a binary tree node.* public class TreeNode ...
- 剑指Offer - 面试题36. 二叉搜索树与双向链表(中序循环/递归)
1. 题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 特别地,我们希望可以就地完成转换操作.当转化完成以后,树中节点的左指 ...
- 剑指Offer - 面试题33. 二叉搜索树的后序遍历序列(递归)
1. 题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. 参考以下这颗二叉搜索树:5/ \2 6 ...
- 剑指offer面试题[27]-二叉搜索树与双向链表
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. /* struct TreeNode {int val;struct Tr ...
- 剑指offer面试题36. 二叉搜索树与双向链表(中序遍历)(递归)
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 思路 详见链接 代码 #class Node: # def __ini ...
- 剑指offer面试题33. 二叉搜索树的后序遍历序列(二叉树)(递归)
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. 思路 详见链接 代码 class Sol ...
最新文章
- 看完后,我才明白 Redis 为什么默认 16 个数据库?
- 动态规划 —— 01背包问题
- use putty to log on OS
- python数据表_第1关:了解python数据表操作
- Onedrive云盘程序——OneManager小白设置指南
- protobuf windows java_如何通过Eclipse在Windows中构建Protobuf for Java
- [Java] 蓝桥杯ADV-202 算法提高 最长公共子序列
- SpellGCN: Incorporating Phonological and Visual Similarities intoLanguage Models
- mysql 取首字母_MySQL中获取拼音首字母的方法
- JAVA实现网页版斗地主_使用Java实现简单的斗地主案例
- 编写 USB 存储设备使用痕迹检测和删除工具
- edge播放视频HTML5黑屏,edge不能播放网页视频怎么办-修复edge浏览器播放视频黑屏的方法 - 河东软件园...
- 滴滴AI负责人叶杰平离职,CTO张博暂时接管
- The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path类似问题简单解决方案
- 主线程和子线程下的事务不回滚【spring】
- 使用winsw发布接口服务
- java对象转JSONObject、JSONObject转java对象及String转JSONObject
- seaborn 频数统计直方图
- 智能座舱域控制器技术发展趋势分析
- yapi 全局变量使用_yapi 中 mock JSONP 接口响应的方法