Binary Search Tree (BST)

原创 2015年11月21日 16:37:18

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).

版权声明:本文为博主原创文章,未经博主允许不得转载。

Deletion from BST (Binary Search Tree)

#include using namespace std;// Data structure to store a Binary Search Tree node struct Node { ...
  • MooMLu
  • MooMLu
  • 2017年05月17日 12:13
  • 119

PAT (Advanced Level) 1043. Is It a Binary Search Tree (25) 判断序列是否为BST的先序遍历,递归

A Binary Search Tree (BST) is recursively defined as a binary tree which has the following propertie...

浅谈BST (Binary Search Tree)

Part I.Introduction         BST是一棵二叉树。         从微观上来讲,BST的每个节点都大于其左节点,且小于其右节点。         从宏观上来将,BST的每...

数据结构-BST(Binary Search Tree)

/****************************************** 数据结构: BST(Binary Search Tree),二叉查找树; 性质: 若结点的左子树不空,则左子树...
  • Jarily
  • Jarily
  • 2013年03月15日 19:00
  • 6812

72【leetcode】经典算法- Lowest Common Ancestor of a Binary Search Tree(lct of bst)

题目描述:一个二叉搜索树,给定两个节点a,b,求最小的公共祖先 _______6______ / \ ___2__ __...

Binary Search Tree(BST)二叉搜索树的实现-java语言

在这篇文章中主要实现的是通过将数组中的元素建成一棵二叉树,并通过中序遍历的方法将数组中的元素按升序输出,实现的语言是java.思路很简单,就是在建树的时候,以根节点(或父节点)为界,使得根节点的做孩子...

BST(Binary Search Tree,二叉查找树,二叉排序树)c的实现(部分函数不知如何调用)

#include #include #include using namespace std; typedef struct node { int key; struct node...

[C++]LeetCode: 122 Validate Binary Search Tree (是否是合法BST树)

题目: Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST i...

PAT (Advanced Level) 1099. Build A Binary Search Tree (30) 中序遍历往BST中填数据

A Binary Search Tree (BST) is recursively defined as a binary tree which has the following propertie...

BST(binary search tree)

#include #include #include using namespace std; typedef struct node *link; struct node{ int value...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Binary Search Tree (BST)
举报原因:
原因补充:

(最多只允许输入30个字)