二叉搜索树

146 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第19天,点击查看活动详情。 ​

二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)

它或者是一棵空树,或者是具有下列性质的二叉树 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别二叉排序树二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势;所以应用十分广泛,例如在文件系统和数据库系统一般会采用这种数据结构进行高效率的排序与检索操作

二叉搜索树(BST)二叉查找树或二叉排序树一棵二叉搜索树是以二叉树来组织的,可以使用一个链表数据结构来表示,其中每一个结点就是一个对象。一般地,除了key和位置数据之外,每个结点还包含属性lchild、rchild和parent,分别指向结点的左孩子、右孩子和双亲(父结点)。如果某个孩子结点或父结点不存在,则相应属性的值为空(NULL)。根结点是树中唯一父指针为NULL的结点,而叶子结点的孩子结点指针也为NULL。

image.png

很明显,根节点的值小于右子树,大于左子树,常用做搜索操作。

二叉搜索树采用中序遍历,其实就是一个有序数组。

因为上诉的巧妙地规则,所以可以设置很多规则,再二叉搜索树中序遍历后,可以得到一个数组,此数组一定是有序地,所以可以用来确定一些节点地关联规则,例如,确定一颗二叉搜索树地公共节点是哪个,众数节点等等,都是非常方便地操作,如果是一颗普通地二叉树的话,只有用map挨个去统计节点信息。

image.png