二叉查找树(Binary Search Tree),(又:
二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的
二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为
二叉排序树。
二叉排序树的查找过程通常采取
二叉链表作为
二叉排序树的
存储结构。
中序遍历二叉排序树可得到一个
关键字的有序序列,一个无序序列可以通过构造一棵二叉排序树变成一个有序序列,构造树的过程即为对无序序列进行排序的过程。每次插入的新的结点都是二叉排序树上新的
叶子结点,在进行插入操作时,不必移动其它结点,只需改动某个结点的
指针,由空变为非空即可。搜索,插入,删除的复杂度等于树高,O(log(n)).
二叉搜索树可提供对数时间的元素插入和访问。二叉搜索树的节点放置规则是:任何节点的键值一定大于其左子树中的每一个节点的键值,小于其右子树中的每一个节点的键值。因此,从根节点一直往左走,直到无路可走,即得最小元素;从根节点一直往右走,直到无路可走,即得最大元素。