二叉搜索树详解与实现
二叉搜索树概念
二叉搜索树又称二叉排序树,它具有以下这几种性质:
- 如果它的左子树不为空,则左子树上所有节点的值都小于根节点的值
- 如果它的右子树不为空,则右子树上所有节点的值都大于根节点的值
- 他的左右子树都是二叉搜索树
那么它为什么要叫做二叉排序树呢?
因为它的中序遍历就是一个有序的数列,所以我们一般用中序遍历来遍历二叉搜索树,并且也可以使用二叉搜索树的这个特性来检查当前二叉树是否是二叉搜索树。
二叉树的增删查改
上面我们了解了二叉树的一些特性了,那么下面我们就要开始实现底层的二叉搜索树了,和之前一样,我们还是从增删查改这四个方面入手。
首先,二叉搜索树是一个链表结构的,所以我们要先常见一个结构体来表示链表结构,该结构体中需要一个左节点指针,右节点指针和一个变量来存储值,具体如下:
一. 插入:
之后我们就可以实现以下它的增删查改了,首先我们先看二叉搜索树的插入操作:
对于二叉搜索树来说,它的左孩子的值永远比它的根节点的值小,它的有孩子的值永远比他的根节点的值大,那么这里我们就可以通过这个特性来构造一个二叉搜索树来,首先我们看要当前树是否是空树,如果是空树就直接创建一个节点,将值赋值给它就可以了,如果当前节点不是空树,那么我们就要查找当前节点应该存放的位置,如果我们遍历的节点比要插入的节点大的时候就在当前根节点的左