2022/01/[路飞][LeetCode]剑指 Offer 54_ 二叉搜索树的第k大节点/index

看一百遍美女,美女也不一定是你的。但你刷一百遍算法,知识就是你的了~~

谁能九层台,不用累土起!

题目地址

题目

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

示例 1:

1
2
3
4
5
6
7
输入: root = [3,1,4,null,2], k = 1
3
/ \
1 4
\
2
输出: 4

示例 2:

1
2
3
4
5
6
7
8
9
输入: root = [5,3,6,2,4,null,null,1], k = 3
5
/ \
3 6
/ \
2 4
/
1
输出: 4

限制:

  • 1 ≤ k ≤ 二叉搜索树元素个数

解题思路

做题之前,我们需要对二叉搜索子树有一个简单的认知:

  • 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
  • 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
  • 它的左、右子树也分别为二叉排序树

因此我们只需要先进行中序遍历,就可以获得一个升序的数组,然后将倒数第k项输出即可

解题代码

1
2
3
4
5
6
7
8
9
10
11
12
var kthLargest = function(root, k) {
let list = nSort(root)
return list[list.length-k]
};
var arr = []
var nSort = function(root){
if(!root) return
nSort(root.left)
arr.push(root.val)
nSort(root.right)
return arr
}

当前后左右都没有路时,命运一定是鼓励你向上飞了

如有任何问题或建议,欢迎留言讨论!

文章作者: Joker
文章链接: https://qytayh.github.io/2022/01/[%E8%B7%AF%E9%A3%9E][LeetCode]%E5%89%91%E6%8C%87%20Offer%2054_%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E7%AC%ACk%E5%A4%A7%E8%8A%82%E7%82%B9/index/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joker's Blog