您的位置:首页 > 其它

七、二叉排序树--(1)什么是二叉排序树

2016-05-16 23:30 197 查看
摘自计蒜客:http://www.jisuanke.com/course/35/1423

二叉排序树(Binary
Search Tree)。二叉排序树又称为二叉查找树,二叉搜索树。二叉排序树和普通的二叉树在结构上一样,它要么是一棵空树,要么是这样的一棵二叉树:对任意结点,如果左子树不为空,则左子树上所有结点的权值都小于该结点的权值;如果右子树不为空,则右子树上所有结点的权值都大于该结点的权值;任意结点的左子树和右子树都是一棵二叉排序树;一般而言, 二叉排序树上结点的权值都是唯一的。

在二叉排序树上,对于任意结点,如果有左子树和右子树,那么其左子树上结点的权值都小于右子树上结点的权值。如果中序遍历二叉排序树,会得到一个从小到大的序列。二叉排序树的插入和查找效率相对较高,最坏情况下时间复杂度为 O(n),期望的时间复杂度为 O(logn),其中 n 为树上结点总个数。

二叉排序树最坏情况下时间复杂度为
O(n),这是为什么呢?最坏情况下,二叉排序树会退化成链表,从根结点往左依次递减,或者从根结点往右依次递增。那有什么方法可以解决这个问题呢?在二叉排序树的基础上可以加些优化,可以让其成为 AVL 树,红黑树,SBT,Splay 等等,这些高级的树结构解决了上面的问题,插入和查找的效率均为 O(logn)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: