查找


顺序查找







二叉排序树(二叉树搜索树)




二叉排序树 时间复杂度
不论哪一种操作,所花的时间都和树的高度成正比。因此,如果共有n个元素,那么平均每次操作需要O(logn)的时间。
算法实现
二叉排序树的操作主要有:
- 查找:递归查找是否存在key。
- 首先和根节点进行比较,如果等于根节点,则返回。如果小于根节点,则在根节点的左子树进行查找。如果大于根节点,则在根节点的右子树进行查找。
- 插入:原树中不存在key,插入key返回true,否则返回false。
- 二叉搜索树的插入过程和查找类似。
- 新插入的节点一般在遍历的路径上的最后一点上,即叶子节点。
- 如果待插入的数据比当前节点的数据大,并且当前节点的右儿子为空,则将待插入的节点插到右儿子位置上。
- 如果右儿子不为空,则再递归的遍历右儿子。
- 如果小于当前节点,则对左儿子做类似的处理就行。
- 构造:循环的插入操作。
- 删除:
- 4.1 叶子节点:直接删除,不影响原树
- 4.2 仅仅有左或右子树的节点:节点删除后,将它的左子树或右子树整个移动到删除节点的位置就可以,子承父业。
- 4.3 既有左又有右子树的节点:找到须要删除的节点p的直接前驱或者直接后继s,用s来替换节点p,然后再删除节点s。
平衡二叉树(AVL树)



