我想找到第k个最小的元素。并且,不寻找额外的空间。
我已经写了这个,但是没有得到实际的输出
/**
* Definition for binary tree
* class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) {
* val = x;
* left=null;
* right=null;
* }
* }
*/
public class Solution {
public int kthsmallest(TreeNode A, int B) {
int find=kth(A,B,-1);
System.out.println(find);
return find;
}
public static int kth(TreeNode A,int B,int val)
{
// System.out.print("k "+k);
if(val!=-1)
return val;
if(A==null)
{
return -1;
}
kth(A.left,B,val);
B--;
if(0==B)
{
val=A.val;
//System.out.print("bbbb"+val);
return A.val;
}
//System.out.print(" :k lv: "+k);
kth(A.right,B,val);
if(0==B)
{
val=A.val;
//System.out.print("xdf"+val);
return A.val;
}
return val;
}
}
答案 0 :(得分:0)
问题在于,找到元素后就不会传播它。 替换行:
kth(A.left,B,val);
具有:
int v=kth(A.left,B,val);
if (v != -1) {return v;}
和以下相同:
kth(A.right,B,val);