Java数据结构之003--二叉树(Binary Tree)

二叉树Binary Tree) 是树类应用最普遍的一种数据结构, 是非线性数据结构。顾名思义, 二叉树的每一个节点最多只能包含两个子节点, 一个节点能够包含0-2个子节点, 若是是两个子节点, 也就是一般咱们说的左节点和右节点, 一般子树被称做“左子树” 和“右子树” 。算法

二叉树的应用不少, 也是项目中应用最多的数据结构: 例如MapSetJVM的堆内存的逻辑存储结构是彻底二叉树等。
数据库

除了二叉树, 也有多叉树等, 固然子节点越多, 复杂度越高, 可是其树的高度比较低, 因此拥有较高的查找性能, 经常使用在数据库索引和文件系统。

比较常见的一些树名称的种类以下:
1.彻底二叉树
数据结构

彻底二叉树是二叉树的一个分类, 它的特色是每一个节点的孩子节点的数量能够是0-2 个, 除此以外,它要求每层节点添加, 必须是从左到右, 不容许跳着添加。 性能

 

 

 

 2.满二叉树 Full Binary tree
spa

满二叉树它的特色是每一个节点的孩子节点要么没有, 要么就是两个, 不容许出现单个孩子的状况。
blog

 3.二叉搜索树 Ordered Binary Tree 排序

也称二叉排序树, 这个是咱们接触的最多的一种结构, 它要求节点的左子树小于该节点自己, 右子树大于该节点,每一个节点都符合这样的规则, 对二叉搜索树进行中序遍历就得获得一个有序的序列 索引

二叉搜索树算法的排序规则:内存

a.选择第一个元素做为根节点;
b.以后若是元素大于根节点放在右子树, 若是元素小于根节点, 则放在左子树;
c.最后按照中序遍历的方式进行输出, 则能够获得排序的结果(左->->右) ;

io

 4.均衡二叉树 Balanced Binary Tree

均衡二叉树指的是一个节点的左右子树的高度差值不能大于1, 均衡二叉树通常都是在二叉搜索树的基础之上添加自动维持平衡的性质, 这种树的插入, 搜索, 删除的综合效率比较高。

 

 

 

5.完美二叉树 Perfect binary Tree
完美二叉树是理想中的一种二叉树, 这种树的特色就是很是完美, 每一个节点都有两个孩子节点, 而且每层都被完全填充, 完美二叉树的叶子节点的高度都是同样。