二叉查找树中搜索区间

来源:互联网 发布:python android接口 编辑:程序博客网 时间:2024/05/29 03:15

二叉查找树中搜索区间

Python

"""Definition of TreeNode:class TreeNode:    def __init__(self, val):        self.val = val        self.left, self.right = None, None"""class Solution:    """    @param root: The root of the binary search tree.    @param k1 and k2: range k1 to k2.    @return: Return all keys that k1<=key<=k2 in ascending order.    """         def searchRange(self, root, k1, k2):        # write your code here        L = []        self.preOrderVisit(root, k1, k2, L)        L = sorted(L)        return L    def preOrderVisit(self, root, k1, k2, L):        if root == None:            return        else:            if root.val >= k1 and root.val <= k2:                L.append(root.val)            self.preOrderVisit(root.left, k1, k2, L)            self.preOrderVisit(root.right, k1, k2, L)

java

/** * Definition of TreeNode: * public class TreeNode { *     public int val; *     public TreeNode left, right; *     public TreeNode(int val) { *         this.val = val; *         this.left = this.right = null; *     } * } */public class Solution {    /**     * @param root: The root of the binary search tree.     * @param k1 and k2: range k1 to k2.     * @return: Return all keys that k1<=key<=k2 in ascending order.     */    public ArrayList<Integer> searchRange(TreeNode root, int k1, int k2) {        // write your code here        ArrayList<Integer> L = new ArrayList();        preOrderVisit(root, L, k1, k2);        Collections.sort(L);        return L;    }    private static void preOrderVisit(TreeNode root, ArrayList<Integer> L, int k1, int k2){        if(root == null){            return;        }        else{            if(root.val >= k1 && root.val <=k2){                L.add(root.val);            }            preOrderVisit(root.left, L, k1, k2);            preOrderVisit(root.right, L, k1, k2);        }    }}
0 0
原创粉丝点击