題目描述
給定一棵二叉搜索樹,請找出其中的第k小的結(jié)點。例如, (5,3,7,2,4,6,8) 中,按結(jié)點數(shù)值大小順序第三小結(jié)點的值為4。
思路分析
二叉搜索樹按照中序遍歷的順序打印出來正好就是排序好的順序。
所以,按照中序遍歷順序找到第k個結(jié)點就是結(jié)果。
解釋說明:
public class Solution {
private TreeNode ret;
private int cnt = 0;
public TreeNode KthNode(TreeNode pRoot, int k) {
inOrder(pRoot, k);
return ret;
}
private void inOrder(TreeNode root, int k) {
if (root == null || cnt >= k)
return;
inOrder(root.left, k);
cnt++;
if (cnt == k)
ret = root;
inOrder(root.right, k);
}
}