272. Closest Binary Search Tree Value II


    /*
     * 272. Closest Binary Search Tree Value II
     * 2016-7-21 by Mingyang
     * 一次过,dfs和list
     */
      public List<Integer> closestKValues(TreeNode root, double target, int k) {
            List<Integer> list=new ArrayList<Integer>();
            if(root==null)
              return list;
            Stack<TreeNode> stack=new Stack<TreeNode>();
            TreeNode p=root;
            while(!stack.isEmpty()||p!=null){
                if(p!=null){
                    stack.push(p);
                    p=p.left;
                }else{
                    TreeNode q=stack.pop();
                    if(list.size()<k){
                        list.add(q.val);
                    }else{
                        if(Math.abs(list.get(0)-target)>Math.abs(q.val-target)){
                            list.remove(0);
                            list.add(q.val);
                        }else{
                            return list;
                        }
                    }
                    p=q.right;
                }
            }
            return list;
        }
原文地址:https://www.cnblogs.com/zmyvszk/p/5619023.html