关闭

Binary Search Tree (BST)

标签: C++数据结构
117人阅读 评论(0) 收藏 举报
分类:

Based on“Data Structures and Algorithm Analysis Edition 3.2 (C++ Version)” from C. A. Shaffer

Basic Searching Algorithms

The simplest searching algorithm, Perfromance O(n).

A binary search halves the number of items to check with each iteration, so locating an item (or determining its absence) takes logarithmic time, performance O(log n)

In each interpolation search step, it calculates where in the remaining search space the sought item might be, based on the key values at the bounds of the search space and the value of the sought key, usually via a linear interpolation:

next=low+|xa[low]a[high]a[low](highlow+1)|
The key value actually found at this estimated position is then compared to the key value being sought. If it is not equal, then depending on the comparison, the remaining search space is reduced to the part before or after the estimated position. Performance O(log log n).

Block search refers to a search algorithm for ordered lists. It works by first checking all items Lkm, where and m is the block size, until an item is found that is larger than the search key. To find the exact position of the search key in the list a linear search is performed on the sublist L[(k1)m,km].

Binary Search Tree

Property

All elements stored in the left subtree of a node with value K have values < K. All elements stored in the right subtree of a node with value K have values >= K.

Operations

Traversal

To visit BST nodes in sorted order from lowest to highest, just need to do inorder traversal.

Start from the root node, if greater than what you want, go search left subtree; if less than what you want, go search right subtree, until you find the value you want.

Insert

Start from the root node, if greater than what you want, go search left subtree; if less than what you want, go search right subtree, until there is no subtree. Then creat a leaf node with the new value.

Remove

If it’s a leaf node, just delete it; if it’s an internal node with only one child, just let it’s child be it’s parent’s child, then delete the node ; Else, replace the value you want to delete with the smallest value in the right subtree(that is, the leftest value in the right subtree), then remove the leftest node in the right subtree.

Performance

For search, insert and remove operations, the costs are all O(logn).

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1690次
    • 积分:130
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档