二叉搜索树 Binary Search Tree
二叉树的一种,对于所有节点,其左子树的值小于根结点的值,右子树的值大于根结点的值,当采用中序遍历的时候,得出的结果就是有序序列。
查找
BST 满足上述的特性,那么只需要将要查找的值与当前节点进行判断,然后根据结果是走左分支还是右分支即可。
查找、插入和删除的效率与数的高度 n
相关,一般是 log n
,最坏可能达到 O(n)
,也就是降级成链表。
线索二叉树 (Threaded Binary Tree)
在左指针或者右指针为空的时候,将指针充分利用,从而优化遍历的效率,简单来说如下。
原本为空的右指针指向该节点在中序序列中的后继,原本为空的左指针指向该节点在中序序列的前驱。
从而可以线性遍历二叉树,比递归的中序遍历要更快一些。