11. 二叉查詢樹中搜索區間
阿新 • • 發佈:2020-08-27
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)