二叉搜索树的第k个结点
二叉搜索树的第k个结点
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
采用中序遍历,定义一个全局的kNow判断当前是第几小
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
int kNow=1;
TreeNode KthNode(TreeNode node, int k)
{
if(node==null){
return null;
}
TreeNode le=KthNode(node.left,k);
if(le!=null){
return le;
}
if(k==kNow){
return node;
}
kNow++;
TreeNode ri=KthNode(node.right,k);
if(ri!=null){
return ri;
}else{
return null;
}
}
}

浙公网安备 33010602011771号