二叉树(Binary Tree) 是树类应用最广泛的一种数据结构,拉勾IT课小编为大家分解
, 是非线性数据结构。顾名思义, 二叉树的每个节点最多只能包含两个子节点, 一个节点可以包含0-2个子节点, 如果是两个子节点, 也就是通常我们说的左节点和右节点, 通常子树被称作“左子树” 和“右子树”
二叉树的应用很多, 也是项目中应用最多的数据结构: 例如Map、 Set、 JVM的堆内存的逻辑存储结构是完全二叉树等。
除了二叉树, 也有多叉树等, 当然子节点越多, 复杂度越高, 但是其树的高度比较低, 所以拥有较高的查找性能, 常用在数据库索引和文件系统。
比较常见的一些树名称的种类如下:
1.完全二叉树
完全二叉树是二叉树的一个分类, 它的特点是每个节点的孩子节点的数量可以是0-2 个, 除此之外,它要求每层节点添加, 必须是从左到右, 不允许跳着添加。
![dbde92bb93516cfb0773dff9dcd38803.png](https://i-blog.csdnimg.cn/blog_migrate/6e96d7aebb9edd46ff4213a72826edbc.jpeg)
2.满二叉树 (Full Binary tree)
满二叉树它的特点是每个节点的孩子节点要么没有, 要么就是两个, 不允许出现单个孩子的情况。
![16ace7eb94c62b224deafebf249725cd.png](https://i-blog.csdnimg.cn/blog_migrate/bae1dcd41acffa6d2e69601dea804d40.jpeg)
3.二叉搜索树 (Ordered Binary Tree )
也称二叉排序树, 这个是我们接触的最多的一种结构, 它要求节点的左子树小于该节点本身, 右子树大于该节点,每个节点都符合这样的规则, 对二叉搜索树进行中序遍历就得得到一个有序的序列 。
二叉搜索树算法的排序规则:
a.选择第一个元素作为根节点;
b.之后如果元素大于根节点放在右子树, 如果元素小于根节点, 则放在左子树;
c.最后按照中序遍历的方式进行输出, 则可以得到排序的结果(左->根->右) ;
![114f584b0c0ef02aafd066194a839240.png](https://i-blog.csdnimg.cn/blog_migrate/d1d2a75bbdd3b983f7d6bbd135b45f9a.jpeg)
4.均衡二叉树 (Balanced Binary Tree)
均衡二叉树指的是一个节点的左右子树的高度差值不能大于1, 均衡二叉树一般都是在二叉搜索树的基础之上添加自动维持平衡的性质, 这种树的插入, 搜索, 删除的综合效率比较高。
![cd89f771d8f149d8e7a920bffa3fa5ad.png](https://i-blog.csdnimg.cn/blog_migrate/b0cb48b3d4c7204ab82981539c22a7c0.jpeg)
5.完美二叉树 (Perfect binary Tree)
完美二叉树是理想中的一种二叉树, 这种树的特点就是非常完美, 每个节点都有两个孩子节点, 并且每层都被完全填充, 完美二叉树的叶子节点的高度都是一样。
![0c3d0849dac047bf774f6c5faac01b07.png](https://i-blog.csdnimg.cn/blog_migrate/8fff5353154a632899e7adbbe034ac7e.jpeg)