剑指offer 面试题54. 二叉搜索树的第k大节点(易)
考查应聘者的知识迁移能力。考查应聘者对二叉搜索树和中序遍历的特点的理解。如果应聘者理解二叉搜索树的中序遍历序列是递增的,那么他/她很容易就能找出第k大的节点。
Question
给定一棵二叉搜索树,请找出其中第k大的节点。
示例 1: 示例 2: 1
2
3
4
5
6
7输入: root = [3,1,4,null,2], k = 1
3
/ \
1 4
\
2
输出: 4 限制:1 ≤ k ≤ 二叉搜索树元素个数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
测试用例
功能测试(各种形态不同的二叉搜索树)。 边界值测试(输入k为0、1、二叉搜索树的节点数、二叉搜索树的节点数加1)。 特殊输入测试(指向二叉搜索树根节点的指针为 nullptr
指针)。
本题考点
考查应聘者的知识迁移能力。面试官期待应聘者能够运用中序遍历算法来解决这道面试题。 考查应聘者对二叉搜索树和中序遍历的特点的理解。如果应聘者理解二叉搜索树的中序遍历序列是递增的,那么他/她很容易就能找出第k大的节点。
Intuition
对输入的树,进行中序遍历(右根左)操作,得到递减序列。然后顺序输出第 \(k\) 大的值即可。
Code
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!