题目:给定一棵二叉搜索树,请找出其中第k大的节点。
例如,下图中的二叉搜索树中,按节点数值大小顺序第三个节点的值 是4.
算法分析:
如果按照中序遍历的顺序遍历一棵二叉搜索树,遍历序列的数值是递增排序的。上图中的二叉搜索树的中序遍历序列为{2,3,4,5,6,7,8},因此,只需要用中序遍历算法遍历一棵二叉搜索树,就很容易找出它的第k大结点。
方法一:递归中序遍历
package jianZhiOffer;
/*
* 面试题54:二叉搜索树的第k个大节点
* 题目:给定一棵二叉搜索树,请找出其中第k大的节点。
*/
public class Demo54 {
class BinaryTreeNode{
int val;
BinaryTreeNode left;
BinaryTreeNode right;
public BinaryTreeNode(int val) {
this.val = val;
}
}
public static void main(String[] args) {
Demo54 demo = new Demo54();
BinaryTreeNode root = demo.new BinaryTreeNode(5);<