Integer 对象在函数之间的引用传递起不到全局的作用

 //实现排序二叉树的第k个节点的查找
 TreeNode target = KthNode(p,2);
 public static TreeNode KthNode(TreeNode pRoot, int k)
    {
        if(pRoot == null || k < 1 ){
            return null;
        }
        //ArrayList<Integer> list = new ArrayList<Integer>();
        //list.add(k);
        return KthNode(pRoot,new Integer(k));
    }
    public static TreeNode KthNode(TreeNode p,Integer K){

        TreeNode target = null;
        if(p.left != null){

            target = KthNode(p.left,K);
        }

        if(target == null){

            K--;
            if(K == 0){
                target = p;
            }
        }

        if(target == null && p.right != null){

            target = KthNode(p.right,K);
        }
        return target;
    }

本意是使用Integer对象的引用再函数间传递,使得函数内的修改可以反映到上一层,但是现在下层函数的修改却不能体现到上一层函数,而使用list对象就可以

它本身就不是引用类型,你把它放到一个类里吧

return KthNode(pRoot,new Integer(k));
你改变了引用,这个自然不行,你修改值是可以的。