一、概念
二叉搜索树(BST树):又叫二叉排序树,二叉查找树。它或者是一棵空树;或者是具有以下性质的二叉树:
1.每个结点都有一个数据域,且所有节点的数据域互不相同;
2.若它的左子树不为空,则左子树上的所有结点的值都小于根节点的值;
3.若它的右子树不为空,则右子树上的所有节点的值都大于根节点的值;
4.左子树和右子树都是二搜索树。
对二叉搜索树进行中序遍历的数据是有序的,因此二叉搜索树也成为二叉排序树。它能利用二分法查找实现快速查找。如下图所示,就是一棵二叉搜索树结构。
看到这个概念很容易联想到堆,二叉搜索树和堆的区别是:二叉搜索树的左子树的值小于根,右子树的值大于根;其中序遍历结果是有序的。而堆的根的值大于或者小于左右孩子,并且是一棵完全二叉树。
二、BST树结构的设计
我们将BST树每个节点的结构设计为4个部分,分别为左孩子节点、双亲节点、数据域和右孩子节点。其中父节点是为回溯设计的,如下图所示。