给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
分析:
中序遍历即可,用private记录两个result和计数器。
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
private TreeNode result = null;
private int count = 0;
TreeNode KthNode(TreeNode pRoot, int k)
{
if (k < 1) return null;
kthNodeAux(pRoot, k);
return result;
}
public void kthNodeAux(TreeNode root, int k) {
if (root == null || count == k) return;
kthNodeAux(root.left, k);
++count;
if (count == k) result = root;
kthNodeAux(root.right, k);
}
}