二分搜索树
二分搜索树是二叉树,和链表一样,动态数据结构,每一颗子树也是二分搜索树,存储的元素必须有可比较性。
- 二分搜索树的每个结点的值
- 大于其左子树的所有结点的值
- 小于其右子树的所有结点的值
二分搜索树的添加和查询
1 | public class BST<E extends Comparable<E>> |
二分搜索树删除结点
寻找二分搜索树的最小值和最大值
1 | //寻找二分搜索树的最小元素 |
删除二分搜索树的最小值和最大值
1 | //从二分搜索树中删除最小值所在结点,返回最小值 |
删除二分搜索树中的结点
1 | //从二分搜索树中删除元素为e的结点 |
二分搜索树的深度遍历
- 遍历操作就是把所有结点都访问一遍
- 访问的原因和业务相关
前序遍历(递归)
1 | public void preOrder() |
中序遍历 (递归)
1 | public void inOrder() |
后序遍历(递归)
1 | public void postOrder() |
前序遍历(非递归)
1 | //二分搜索树非递归前序遍历 |
二分搜索树的层序遍历
1 | //二分搜索树的层序遍历 |
广度优先遍历的意义
- 更快的找到问题的解
- 常用于算法设计中-最短路径
- 图中的深度优先遍历和广度优先遍历