Lintcode 11. 二叉查找树中搜索区间
来源:互联网 发布:知来者犹可追 编辑:程序博客网 时间:2024/06/05 04:15
给定两个值 k1 和 k2(k1 < k2)和一个二叉查找树的根节点。找到树中所有值在 k1 到 k2 范围内的节点。即打印所有x (k1 <= x <= k2) 其中 x 是二叉查找树的中的节点值。返回所有升序的节点值。
思路:
从根节点开始搜索,有三种情况
1. 若当前节点值在范围内,那么先不要加入列表,而是递归对左侧子节点做同样的事,再将当前节点值加入列表,之后递归处理右侧节点。
2. 若当前节点值大于k2,那么就不需考虑其右子树了,递归处理左侧节点。
3. 若当前节点值小于k1,那么就不用考虑左子树了,递归处理右侧节点。
"""Definition of TreeNode:class TreeNode: def __init__(self, val): self.val = val self.left, self.right = None, None"""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 """ def searchRange(self, root, k1, k2): # write your code here if root is None: return [] if k1 <= root.val <= k2: return self.searchRange(root.left, k1, k2) + [root.val] + self.searchRange(root.right, k1, k2) elif root.val < k1: return self.searchRange(root.right, k1, k2) else: return self.searchRange(root.left, 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 二叉查找树中搜索区间 ? 待解决
- 题目:二叉查找树中搜索区间
- 二叉查找树中搜索区间
- 二叉查找树中搜索区间
- 二叉查找树中搜索区间
- 二叉查找树中搜索区间
- 二叉查找树中搜索区间
- Python 网络编程
- 让C/C++程序员告诉你什么叫浪漫,表白黑科技,炫酷多彩求爱利器
- 遇C语言条件编译就犯怵,不知什么意思,c语言头文件中的宏定义
- 2017菜鸡C与C++工程师总结,撸码撸码,垃圾专科生撸码人生
- C语言的恶趣味,胆小者莫入,以免入门到放弃,C语言夺命题十例!
- Lintcode 11. 二叉查找树中搜索区间
- 为什么学习C语言这么久,看的懂代码,做不出题,写不出来项目?
- 南阳理工学院OJ
- MyBatis小介绍与ibatis
- 如何去除桌面快捷方式的小箭头
- n个数的排序
- 韬光养晦一周年,拍拍二手品牌为何今日才“亮剑”?
- PCA及白化的数学理解
- ubuntu 16.04源