编程练习
题目:给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。
思路:既然给定了二叉排序树,就要想到利用该树的特点,即中序遍历的结果是排好序的(从小到大),所以只需要完成对该树的中序遍历,然后取第k-1个遍历序列中的结点即可。此处我采用了ArrayList来盛装遍历结果。
注意:需要判断越界情况,比如输入的k为0,或者k的值大于结果集list.size()这两种情况都应该返回null。
java代码如下:
1 | import java.util.ArrayList; |