【问题标题】:Where to start with Binary Search Tree?从哪里开始使用二叉搜索树?
【发布时间】:2016-11-06 22:23:39
【问题描述】:

根据我的理解,在完成二分搜索时,您从中间值开始,并在其上完成分治算法,直到找到正确的值。

但是,当我查看二叉搜索树时,我的理解是,这是以相同的方式完成的,初始节点是中间值,但是我看到了以第一个节点作为第一个值的未排序列表的示例数组。

哪种方法是正确的?

谢谢

【问题讨论】:

    标签: binary-search-tree


    【解决方案1】:

    通常,您从中间节点开始,然后检查左右两半。

    分治算法通过将原始问题分解为较小规模的子问题来递归处理问题。问题将被缩减,直到它小到可以直接解决。

    二叉搜索树的情况,算法取中间节点,然后递归求解左右子问题。

    BinarySearch(Array arr, value)
        return BinarySearchAux(arr, value, 0, arr.length)
    
    BinarySearch(Array arr, value, start, end)
        if start >= end
            return value == arr[start]
        mid = floor((end - start) / 2)
        if value == arr[mid]
            return true
        return 
            BinarySearchAux(arr, value, start, mid-1) || 
            BinarySearchAux(arr, value, mid+1, end)
    

    【讨论】:

    • 如果总是从中间值开始,你怎么会得到一棵不平衡的单边树?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    相关资源
    最近更新 更多