LintCode 11. 二叉查詢樹中搜索區間 Python
阿新 • • 發佈:2019-01-07
描述
給定兩個值 k1 和 k2(k1 < k2)和一個二叉查詢樹的根節點。找到樹中所有值在 k1 到 k2 範圍內的節點。即列印所有x (k1 <= x <= k2) 其中 x 是二叉查詢樹的中的節點值。返回所有升序的節點值。
樣例
如果有 k1 = 10 和 k2 = 22, 你的程式應該返回 [12, 20, 22].
20
/ \
8 22
/ \
4 12
分析
二叉樹的值採用中序遍歷
程式碼
"""
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 __init__(self):
self.x = []
def searchRange(self, root, k1, k2):
# write your code here
if root is None :
return self.x
if root.left:
self.searchRange(root.left, k1, k2)
if root.val is not None and k1 <= root.val <= k2:
print(root.val)
self.x.append(root.val)
if root.right:
self.searchRange(root.right, k1, k2)
return self.x