一、二叉查找树
二叉查找树,树中的任何节点的值大于它的左孩子,且小于它的右孩子。 任意节点的左、右子树也分别为二叉搜索树。
它的搜索时间复杂度为o(logn)。
但是在二叉查找树中,图下这种情况想要搜索值为3的节点,效率非常低。
![](https://i-blog.csdnimg.cn/blog_migrate/31f77d500202d6daa83830751fbc2610.jpeg)
为了解决二叉查找树的不平衡问题,2-3树孕育而生,2-3树能够很好的实现树的平衡。
2-3树每个节点都包含1个元素和2个孩子(称之为2节点)或者包含2个元素和3个孩子(称之为3节点)。
2节点:有一个值,两个子节点,如下图。
![](https://i-blog.csdnimg.cn/blog_migrate/cafc865b5183b89817a154ee04e3a3bf.jpeg)
3节点:有两个值,三个子节点,如下图。
![](https://i-blog.csdnimg.cn/blog_migrate/1c6b3e85a8fa1c0847a30754d7261cd9.jpeg)
2-3树在插入节点的时候,每个节点可以存储的值的数量比二叉查找树多,这样就有效减少了树的高度。另外需要注意的是,插入节点时,二叉查找树是向下生长,而2-3树和B树是向上生长。