二叉搜索树

二叉搜索树

二叉搜索树是二叉树的一种特殊形式。 二叉搜索树具有以下性质:每个节点中的值必须大于(或等于)其左侧子树中的任何值,但小于(或等于)其右侧子树中的任何值。

二叉搜索树(BST)是二叉树的一种特殊表示形式,它满足如下特性:
每个节点中的值必须大于(或等于)存储在其左侧子树中的任何值。
每个节点中的值必须小于(或等于)存储在其右子树中的任何值。
二叉搜索树
像普通的二叉树一样,我们可以按照前序、中序和后序来遍历一个二叉搜索树。 但是值得注意的是,对于二叉搜索树,我们可以通过中序遍历得到一个递增的有序序列。因此,中序遍历是二叉搜索树中最常用的遍历方法。
求解二叉搜索树的中序后继节点(in-order successor)的题目。显然,你可以通过中序遍历来找到二叉搜索树的中序后继节点。 你也可以尝试运用二叉搜索树的特性,去寻求更好的解决方案。
一个高度平衡的二叉搜索树(平衡二叉搜索树)是在插入和删除任何节点之后,可以自动保持其高度最小。也就是说,有N个节点的平衡二叉搜索树,它的高度是logN。并且,每个节点的两个子树的高度不会相差超过1。
一个有N个节点的平衡二搜索叉树的高度总是logN,我们可以计算节点总数和树的高度,以确定这个二叉搜索树是否为高度平衡的。每个节点的两个子树的深度不会相差超过1,也可以根据这个性质,递归地验证树。
二叉树及其相关操作, 包括搜索、插入、删除。 当分析这些操作的时间复杂度时,我们需要注意的是树的高度是十分重要的考量因素。以搜索操作为例,如果二叉搜索树的高度为h,则时间复杂度为O(h)。二叉搜索树的高度的确很重要。
所以,我们来讨论一下树的节点总数N和高度h之间的关系。 对于一个平衡二叉搜索树, 我们已经在前文中提过, 。但对于一个普通的二叉搜索树, 在最坏的情况下, 它可以退化成一个链。
因此,具有N个节点的二叉搜索树的高度在logN到N区间变化。也就是说,搜索操作的时间复杂度可以从logN变化到N。这是一个巨大的性能差异。所以说,高度平衡的二叉搜索树对提高性能起着重要作用。
高度平衡的二叉搜索树在实际中被广泛使用,因为它可以在O(logN)时间复杂度内执行所有搜索、插入和删除操作。平衡二叉搜索树的概念经常运用在Set和Map中。 通常情况下,使用高度平衡的二叉搜索树将把时间复杂度从 O(N) 改善到 O(logN)。
高度平衡的二叉搜索树是二叉搜索树的特殊表示形式,旨在提高二叉搜索树的性能。

基本操作

leetcode 450.删除二叉搜索树中的节点

leetcode 700.二叉搜索树中的搜索

leetcode 701.二叉搜索树中的插入操作

解决问题

leetcode 96.不同的二叉搜索树

leetcode 98.验证二叉搜索树

leetcode 108.将有序数组转换为二叉搜索树

leetcode 110.平衡二叉树

leetcode 173.二叉搜索树迭代器

leetcode 220. 存在重复元素 III

leetcode 230.二叉搜索树中第K小的元素

leetcode 235. 二叉搜索树的最近公共祖先

leetcode 285.二叉搜索树中的顺序后继

leetcode 538.把二叉搜索树转换为累加树

leetcode 703.数据流中的第K大元素