二叉查找树中搜索区间
来源:互联网 发布:yum mirrorlist 编辑:程序博客网 时间:2024/06/03 13:27
题目描述:给定两个值 k1 和 k2(k1 < k2)和一个二叉查找树的根节点。找到树中所有值在 k1 到 k2 范围内的节点。即打印所有x (k1 <= x <= k2) 其中 x 是二叉查找树的中的节点值。返回所有升序的节点值。
样例:如果有 k1 = 10 和 k2 = 22, 你的程序应该返回 [12, 20, 22].
递归+深搜的思路。之前,像类似于“二叉树的所有路径”(详见:点击打开链接)这样的问题用的也是这种思路。应该不会陌生了。
用一个结果列表result存储节点值,因为result中需要不断添加新元素,所以,为了方便,干脆再建立一个辅助函数helper(),helper()中,result作为一个参数存在,接收符合条件的节点值。
从根节点开始向叶子搜索,分三种情况:
1. 如果当前节点值在区间内,那么先别着急加入result,而是递归对这个节点的左孩子做同样的事,也就是处理这个节点的左子树,处理完毕后,再将这个节点值加入result,之后,递归处理这个节点的右子树。这样做的目的是要保证result按升序排列
2. 如果当前节点值大于k2(给出区间的上限),那就不用考虑这个节点的右子树了,递归处理左子树,当然,这个节点是不符合条件的,不用加入result
3. 如果当前节点值小于k1(给出区间的下限),与2中类似,自己脑补吧。
于是按照上面的思路,给出代码:
"""Definition of TreeNode:class TreeNode: def __init__(self, val): self.val = val self.left, self.right = None, None"""class Solution: """ @param root: The root of the binary search tree. @param k1 and k2: range k1 to k2. @return: Return all keys that k1<=key<=k2 in ascending order. """ def searchRange(self, root, k1, k2): result = [] self.helper(root, k1, k2, result) return result def helper(self, root, k1, k2, result): if root is None: return elif root.val >= k1 and root.val <= k2: self.helper(root.left, k1, k2, result) result.append(root.val) self.helper(root.right, k1, k2, result) elif root.val > k2: self.helper(root.left, k1, k2, result) else: self.helper(root.right, k1, k2, result) # write your code here
0 0
- 题目:二叉查找树中搜索区间
- 二叉查找树中搜索区间
- 二叉查找树中搜索区间
- 二叉查找树中搜索区间
- Lintcode 二叉查找树中搜索区间
- 二叉查找树中搜索区间
- 二叉查找树中搜索区间
- 二叉查找树搜索区间
- lintcode-二叉查找树中搜索区间-11
- LintCode 11-二叉查找树中搜索区间
- LintCode 11 二叉查找树中搜索区间
- LintCode:M-二叉查找树中搜索区间
- LintCode-----11.二叉查找树中搜索区间
- (lintcode)第11题二叉查找树中搜索区间
- LINTCODE —— 二叉查找树中搜索区间
- lintcode二叉查找树中搜索区间 java
- Lintcode 11. 二叉查找树中搜索区间
- 11.Search Range in Binary Search Tree-二叉查找树中搜索区间(中等题)
- Android——获取手机当前信号强度(dbm/asu值)
- 《VR入门系列教程》之21---使用Unity开发GearVR应用
- 坚持#第13天~触控培训结束 满载而归
- 1342433
- 编辑距离
- 二叉查找树中搜索区间
- linux下面安装redis扩展(在yum安装lnmp的环境下)
- 《VR入门系列教程》之22---GearVR SDK代码剖析
- 数据挖掘面试常见的问题
- HDU 3613 Manacher应用
- tjut 2873
- 单链表的整表创建
- jQuery轻量级响应式图片轮播插件ResponsiveSlides.js(仅1kb)
- Miscellaneous | 图示理解卷积的物理意义