晶晶下的小红帽 2015-09-12 04:52 采纳率: 60%
浏览 2296

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对象就可以

展开全部

  • 写回答

2条回答 默认 最新

  • bdmh 移动开发领域优质创作者 2015-09-12 04:55
    关注

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

    评论
  • devmiao 2015-09-12 05:15
    关注

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

    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部