LintCode-----11.二叉查找树中搜索区间
来源:互联网 发布:逆战刷枪软件源码 编辑:程序博客网 时间:2024/06/03 12:40
原题目
中序遍历后比较 8056s
import java.util.*;import java.lang.*;public class Solution { /* * @param root: param root: The root of the binary search tree * @param k1: An integer * @param k2: An integer * @return: return: Return all keys that k1<=key<=k2 in ascending order */ public List<Integer> searchRange(TreeNode root, int k1, int k2) { // write your code here List<Integer> all=new ArrayList<>(); inOrder(root,all); List<Integer> result=new ArrayList<>(); for(int i=0;i<all.size();i++){ int temp=all.get(i); if(temp>=k1&&temp<=k2){ result.add(temp); } } return result; } public void inOrder(TreeNode root,List<Integer> list){ if(root!=null){ inOrder(root.left,list); list.add(root.val); inOrder(root.right,list); } }}
九章解答
4000+s,我就说嘛,之前没有利用二叉搜索树的条件
private ArrayList<Integer> results; public ArrayList<Integer> searchRange(TreeNode root, int k1, int k2) { results = new ArrayList<Integer>(); helper(root, k1, k2); return results; } private void helper(TreeNode root, int k1, int k2) { if (root == null) { return; } //当前值比k1都大,看看他的左儿子的情况,要找更小的数来比较,右边就不看了。 if (root.val > k1) { helper(root.left, k1, k2); } if (root.val >= k1 && root.val <= k2) { results.add(root.val); } //当前的值比k2都小,看看右儿子的情况,要找最接近k2的数,左边就不看了。 if (root.val < k2) { helper(root.right, k1, k2); } }
阅读全文
0 0
- Lintcode 二叉查找树中搜索区间
- LintCode-----11.二叉查找树中搜索区间
- Lintcode 11. 二叉查找树中搜索区间
- lintcode-二叉查找树中搜索区间-11
- LintCode 11-二叉查找树中搜索区间
- LintCode 11 二叉查找树中搜索区间
- LintCode:M-二叉查找树中搜索区间
- (lintcode)第11题二叉查找树中搜索区间
- LINTCODE —— 二叉查找树中搜索区间
- lintcode二叉查找树中搜索区间 java
- lintcode-二叉树中查找区间
- lintcode&九章算法——No.11 二叉查找树中搜索区间 ? 待解决
- 题目:二叉查找树中搜索区间
- 二叉查找树中搜索区间
- 二叉查找树中搜索区间
- 二叉查找树中搜索区间
- 二叉查找树中搜索区间
- 二叉查找树中搜索区间
- springMVC笔记
- 翻转单词顺序列
- 2017.8.28. 欧拉函数
- js 的作用域 域解析 分析
- 种花 (贪心+(堆 or 线段树))
- LintCode-----11.二叉查找树中搜索区间
- POJ-1091:[NOIP模拟](二)T2-跳蚤
- HttpServletRequest
- 电机矢量控制
- 使用Material design仿JD顶部搜索
- Universal 2nd Factor (U2F) 概述(4)-特定的公私秘钥对
- [知了堂学习笔记]_css3特效第一篇--旋转的背景&翻书效果
- python 验证码
- POJ