AlgoDesign

Range lookup problem

1from collections import namedtuple
2class Solution:
3    def rangeLookupProblem(self, root, range):
4        interval = namedtuple("interval", ("start", "end"))
5        range = interval(range[0], range[1])
6        self.res = []
7        
8        def dfs(node):
9            if node.val >= range.start and node.val <= range.end: 
10                if node.left: dfs(node.left)
11                self.res.append(node.val)
12                if node.right: dfs(node.right)
13            if node.val < range.start and node.left: dfs(node.right)
14            elif node.val > range.end and node.right: dfs(node.left)
15        dfs(root)
16
17        return self.res