1. 程式人生 > 實用技巧 >11. 二叉查詢樹中搜索區間

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

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

中文English

給定一個二叉查詢樹和範圍[k1, k2]。按照升序返回給定範圍內的節點值。

樣例

樣例 1:

輸入:{5},6,10
輸出:[]
        5
它將被序列化為 {5}
沒有數字介於6和10之間

樣例 2:

輸入:{20,8,22,4,12},10,22
輸出:[12,20,22]
解釋:
        20
       /  \
      8   22
     / \
    4   12
它將被序列化為 {20,8,22,4,12}
[12,20,22]介於10和22之間
輸入測試資料(每行一個引數)如何理解測試資料?

中序遍歷,遞迴

"""
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 not root: return [] results = [] self.midTravel(root, results,k1,k2) return results def midTravel(self, root,results, k1, k2): #遞迴出口
if not root: return self.midTravel(root.left,results, k1, k2) if (root.val >= k1) and (root.val <= k2): results.append(root.val) self.midTravel(root.right,results,k1,k2)