题目描述
给定一棵二叉搜索树,请找出其中第k大的节点。
示例一:
1 | 输入: root = [3,1,4,null,2], k = 1 |
示例二:
1 | 输入: root = [5,3,6,2,4,null,null,1], k = 3 |
题解
BFS + 排序
直观印象就是先将二叉树的节点遍历出来, 然后经过排序得出结果
1 | public int kthLargest(TreeNode root, int k) { |
但是这样做的时间复杂度很差.
中序遍历(重要)
二叉搜索数的中序遍历为递增序列
只要得到二叉搜索树的中序遍历数组, 就直接免去了排序的过程, 大大加快程序执行速度.
1 | public int kthLargest2(TreeNode root, int k) { |