1. 程式人生 > >LintCode 11. 二叉查詢樹中搜索區間 Python

LintCode 11. 二叉查詢樹中搜索區間 Python

描述

給定兩個值 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