public Integer kthSmallestNode(Node root, int k){
if(k list = new ArrayList();
doInOrderTraverse(this.root, k, list);
if(list.size() >= k){
return list.get(k-1);
}
return null;
}
private void doInOrderTraverse(Node n, int max, ArrayList list){
if(n == null || list.size() >= max) return;
doInOrderTraverse(n.left, max, list);
if(list.isEmpty() || n.data != list.get(list.size() - 1)){
list.add(new Integer(n.data));
}
doInOrderTraverse(n.right, max, list);
}