博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 272: Closest Binary Search Tree Value II
阅读量:5039 次
发布时间:2019-06-12

本文共 2319 字,大约阅读时间需要 7 分钟。

Given a non-empty binary search tree and a target value, find k values in the BST that are closest to the target.

Note:

  • Given target value is a floating point.
  • You may assume k is always valid, that is: k ≤ total nodes.
  • You are guaranteed to have only one unique set of k values in the BST that are closest to the target.

 

Follow up:

Assume that the BST is balanced, could you solve it in less than O(n) runtime (where n = total nodes)?

 

1 /** 2  * Definition for a binary tree node. 3  * public class TreeNode { 4  *     public int val; 5  *     public TreeNode left; 6  *     public TreeNode right; 7  *     public TreeNode(int x) { val = x; } 8  * } 9  */10 public class Solution {11     public IList
ClosestKValues(TreeNode root, double target, int k) {12 var result = new List
();13 14 Stack
s1 = new Stack
(), s2 = new Stack
();15 Inorder(root, target, true, s1);16 Inorder(root, target, false, s2);17 18 for (int i = 0; i < k; i++)19 {20 if (s1.Count == 0)21 {22 result.Add(s2.Pop());23 }24 else if (s2.Count == 0)25 {26 result.Add(s1.Pop());27 }28 else29 {30 double d1 = Math.Abs((double)s1.Peek() - target);31 double d2 = Math.Abs((double)s2.Peek() - target);32 33 if (d1 < d2)34 {35 result.Add(s1.Pop());36 }37 else38 {39 result.Add(s2.Pop());40 }41 }42 }43 44 return result;45 }46 47 48 private void Inorder(TreeNode node, double target, bool reverse, Stack
stack)49 {50 if (node == null) return;51 52 Inorder(reverse ? node.right : node.left, target, reverse, stack);53 54 if (reverse ? (double)node.val <= target : (double)node.val > target)55 {56 return;57 }58 59 stack.Push(node.val);60 61 Inorder(reverse ? node.left : node.right, target, reverse, stack);62 }63 }

 

转载于:https://www.cnblogs.com/liangmou/p/8071212.html

你可能感兴趣的文章
android圆角View实现及不同版本号这间的兼容
查看>>
OA项目设计的能力③
查看>>
Cocos2d-x3.0 文件处理
查看>>
全面整理的C++面试题
查看>>
Web前端从入门到精通-9 css简介——盒模型1
查看>>
Activity和Fragment生命周期对比
查看>>
OAuth和OpenID的区别
查看>>
android 分辨率自适应
查看>>
查找 EXC_BAD_ACCESS 问题根源的方法
查看>>
国外媒体推荐的5款当地Passbook通行证制作工具
查看>>
日常报错
查看>>
list-style-type -- 定义列表样式
查看>>
hibernate生成表时,有的表可以生成,有的却不可以 2014-03-21 21:28 244人阅读 ...
查看>>
mysql-1045(28000)错误
查看>>
Ubuntu 编译出现 ISO C++ 2011 不支持的解决办法
查看>>
1.jstl c 标签实现判断功能
查看>>
Linux 常用命令——cat, tac, nl, more, less, head, tail, od
查看>>
超详细的Guava RateLimiter限流原理解析
查看>>
VueJS ElementUI el-table 的 formatter 和 scope template 不能同时存在
查看>>
Halcon一日一练:图像拼接技术
查看>>