应用
- 堆,红黑树,二叉查找树,并查集,线段树,后缀树,树状数组
- 特点:逻辑结构, 分层结构
二叉查找树
定义
- 树和二叉树的定义是递归的
- 查找用的二叉树,左小右大
操作
插入
- 递进地判断待插入数据与树中结点值的大小关系,找到待插入数据应该出现的位置。
- 如果待插入数据比根结点的数据小,就去检查根结点的左孩子。如果左孩子不为空,就继续向下检查,如果左孩子为空,就说明已经找到应该插入数据的位置了。向右的情况则与向左的情况互为镜像,只是条件判断的符号换了一下而已
查找
- 在二叉查找树中找一个数据的思路与插入数据的思路很相似,唯一的不同之处是遇到空指针就是查找失败,说明待查找数据没在树中。
定义
- 每个结点只有两棵子树
- 有序,左右子树有左右之分
二叉树递归遍历
前序遍历
- 先访问根结点,再前序遍历左子树,最后前序遍历右子树。可见,这个操作的定义就是递归的
补充代码
中序遍历
- 先中序遍历左子树,再访问根结点,最后中序遍历右子树。由于左子树上的值都比根结点小,右子树上的值都比根结点大,所以,中序遍历一棵树所得到的结果,是从小到大有序的,可以根据这个特点,来检验你的中序遍历是否正确实现了
补充代码
后续遍历
- 先后序遍历左子树,再后序遍历右子树,最后访问根结点
补充代码
总结
- 二叉树的前中后序的遍历,坐标名词针对的是 根节点
- 无论何种遍历,左孩子永远比右孩子前
二叉树非递归遍历
补充代码
树的高度
- 树中结点的最大层次称为树的高度