题目 剑指 Offer 54. 二叉搜索树的第k大节点 思路1 二叉搜索树的特性就是中序遍历结果为递增序列,而题目要求的是第 k 大节点,所以就应该是要遍历结果为降序, 按照先遍历左子树.输出节点.遍历右子树得到的是升序结果,要得到降序,需要按照先遍历右子树.输出节点.再遍历左子树即可 什么时候结束递归呢?有两种情况: root 为 null 的时候,代表遍历到叶子节点了,此时需要返回 当前节点为第 k 大节点:每遍历到一个节点,将 k 值减1,直到 k 值为 0 ,说明找到第 k 大节点了,此…
题目描述 给定一棵二叉搜索树,请找出其中第k大的节点. 示例1: 输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2 输出: 4 示例2: 输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1 输出: 4 限制: 1 ≤ k ≤ 二叉搜索树元素个数 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/er-cha-sou-suo-…
题目信息 时间: 2019-07-04 题目链接:Leetcode tag:二叉搜索树 中序遍历 递归 难易程度:中等 题目描述: 给定一棵二叉搜索树,请找出其中第k大的节点. 示例1: 输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2 输出: 4 示例2: 输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1 输出: 4 注意 1. 1 ≤ k ≤ 二叉搜索树元素个数 解题思路…
题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点.例如, (5,3,7,2,4,6,8)    中,按结点数值大小顺序第三小结点的值为4.   题解: 考察的就是中序遍历 不过注意进行剪枝 class Solution { public: TreeNode* KthNode(TreeNode* pRoot, int k) { if (pRoot == nullptr)return nullptr; inOrder(pRoot, k); return res; } void inOrder(…
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 给定一棵二叉搜索树,请找出其中的第k小的结点. 思路 设置全局变量index=0,对BST进行中序遍历,每遍历一个结点,index+1,当index=k时,该结点即为所求结点. 测试算例 1.功能测试(左斜树.右斜树.普通树) 2.边界值测试(k=1,k=结点数目) 3.特殊测试(null,k<=0,k>结点数目) Java代码 //题目:给定一棵二叉搜索树,请…
[剑指Offer]二叉搜索树的第k个结点 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描述: 给定一颗二叉搜索树,请找出其中的第k大的结点. 例如, 5 / \ 3 7 / \ / \ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4. 解题方法 遇到BST想中序遍历.这个题先中序遍历,然后找出第k个节点. 代码: # -*- coding:utf-8 -*- #…
/* 题目: 求二叉搜索树的第k大节点. */ /* 思路: 中序遍历. */ #include<iostream> #include<cstring> #include<vector> #include<algorithm> #include<map> using namespace std; struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; Tr…
1. 题目描述 /* 给定一棵二叉搜索树,请找出其中的第k小的结点. 例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4. */ 2. 思路 中序遍历二叉搜索树,第K个就是结果 3. 非递归 import java.util.*; public class Solution { static TreeNode KthNode(TreeNode pRoot, int k){ return inorderNR(pRoot, k); } public static Tre…
62. 二叉搜索树的第 k 个结点 题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点.例如, (5,3,7,2,4,6,8)    中,按结点数值大小顺序第三小结点的值为4. 法一: 非递归中序遍历 TreeNode* KthNode(TreeNode* pRoot, int k) { // 采用中序遍历这个树,遍历到第k个结点就是答案 stack<TreeNode*> s; ; TreeNode* cur = pRoot; while(cur || !s.empty()){ while…
问题描述 给定一棵二叉搜索树,请找出其中第k大的节点.   示例 1: 输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \   2 输出: 4 示例 2: 输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1 输出: 4   限制: 1 ≤ k ≤ 二叉搜索树元素个数 代码 这道题考察了二叉搜索树的性质,按照右->根->左的顺序搜索,得到的序列为从大到小,如果按照左->根-&g…