LeetCode "Closest Binary Search Tree Value II"
2015-09-02 11:24
489 查看
I made it too complicated first.. It is really simply if full-tree in-order traversal is allowed.
View Code
class Solution { int inx, sofar; // closest bool bleft; // target on left of closest vector<int> nums; void go(TreeNode *p, double target) { if (!p) return; go(p->left, target); nums.push_back(p->val); if (abs(sofar - target) > abs(p->val - target)) { inx = nums.size() - 1; sofar = p->val; bleft = target < p->val; } go(p->right, target); } public: vector<int> closestKValues(TreeNode* root, double target, int k) { sofar = std::numeric_limits<int>::min(); go(root, target); size_t len = nums.size(); int l = bleft ? inx - 1: inx; int r = bleft ? inx : inx + 1; vector<int> ret; while (k--) { if (l < 0) { ret.push_back(nums[r ++]); } else if (r == len) { ret.push_back(nums[l --]); } else { double succ_diff = abs(nums[r] - target); double pred_diff = abs(nums[l] - target); if (succ_diff < pred_diff) ret.push_back(nums[r++]); else ret.push_back(nums[l--]); } } return ret; } };
View Code
相关文章推荐
- PAT-01-复杂度2 Maximum Subsequence Sum
- 改变UISearchBar的文本颜色
- 关于aque.h头文件
- EasyUI中combogrid的使用方法
- UVA 120 Stacks of Flapjacks (STL deque&reverse)
- ngui 的scrollview grid 只有一个子对象时 不会弹回
- soapUI接口测试工具所有版本下载地址
- Kanzi UI Solution
- iOS 8 自适应 Cell,UITableViewAutomaticDimension设置无效,滚动后显示正常
- easyui-datagrid 根据某一列修改另一列的样式
- 2015年8月25日【用户管理各命令的使用】-JY1506402-19+liuhui880818
- require.js+backbone.js基本使用
- UESTC OJ Windy 数
- easyUI实现显示“未找到查询结果”以及在loadtable方法中传递参数
- jsp 页面刷新,EasyUI刷新、加载
- 解决easyUI前端排序效果针对数字类型的排序出现仅首位数字排序的情况
- Connection is read-only. Queries leading to data modification are not allowed
- How to quickly install git on ret hat
- EasyUI使用ajax实时验证是否已经存在(多参数验证)
- NGUI中深度depth和z轴关系