题目描述
给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。
思路
二叉搜索树的中序遍历是按照大小顺序进行排列的,我们再中序遍历顺序中返回第K个值即可;
public class Solution {
int index = 0;
TreeNode KthNode(TreeNode pRoot, int k)
{
if(pRoot ==null||k<=0)
return null;
if(pRoot!=null)
{
TreeNode node = KthNode(pRoot.left,k);
if(node != null)
return node;
index++;
if(index==k)
return pRoot;
node = KthNode(pRoot.right,k);
if(node != null)
return node;
}
return null;
}
}