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

题目描述

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

输入输出

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

基本思路

中序遍历之后取倒数第k个数即为结果

java实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
LinkedList<Integer> res = new LinkedList<>();
public int kthLargest(TreeNode root, int k) {
inOrder(root);
int num = res.get(res.size()-k);
return num;
}

public void inOrder(TreeNode root){
if(root == null){
return;
}
inOrder(root.left);
res.add(root.val);
inOrder(root.right);
}
}