二叉搜索树
二叉搜索树(Binary Search Tree,BST)是一颗典型的二叉树,任何节点的键值大于等于该节点左子树中的所有键值,小于等于该节点右子树中的所有键值。 二叉搜索树可以看作是有序集合的树形存储,是一种用途非常广泛的基础数据结构。
操作类型 | 平均时间复杂度 |
Insert | O(logn) |
Delete | O(logn) |
Search | O(logn) |
实现
二叉搜索树主要提供insert, delete, search 三种操作,接下来首先定义结点,然后给出三个操作的实现。
typedef struct Single_Thread_BST_Node { int value; struct Single_Thread_BST_Node *left; struct Single_Thread_BST_Node *right; struct Single_Thread_BST_Node *parent; } ST_BST_Node; 每个结点维系三个指针,分别指向左孩子,右孩子,和父节点,另外附带一个整型的数据域。
搜索操作
搜索操作从头结点进行比较,如果