二叉树
二叉树概念
二叉树(Binary Search tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是
一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特
点是每个结点最多只能有两棵子树,且有左右之分 。
二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子
树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个结点
二叉树特点
1、若它的左子树不为空,则左子树上所有的节点值都小于它的根节点值。
2、若它的右子树不为空,则右子树上所有的节点值均大于它的根节点值。
3、它的左右子树也分别可以充当为二叉查找树。
4、每个结点最多有两棵子树,即二叉树不存在度大于2的结点。
5、二叉树的子树有左右之分,其子树的次序不能颠倒
例如:
![d7fa050734f472f0cb004beacafeb6ef.png](https://i-blog.csdnimg.cn/blog_migrate/6626c513d6cdad2bdbf03cd34c5813e4.png)
完全二叉树以及满二叉树的概念:完全二叉树和满二叉树区别
满二叉树:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是
说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。
完全二叉树:完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。满二叉树最
后一个结点前的结点都齐全没有空节点; 要注意的是满二叉树是一种特殊的完全二叉树。
例如:
![c42ddff14ec3286ef32d84a0e2258129.png](https://i-blog.csdnimg.cn/blog_migrate/96c07dbf1a95e580200028be521fc3c8.png)
例如,当我们现在想要查找数值为14的节点。由于二叉查找树的特性,我们可以很快着找到它,其过程如下
1、和根节点9比较
![388e1943980bb06850e5354d9e01b34c.png](https://i-blog.csdnimg.cn/blog_migrate/0d7356d1f8675c63780661f47297dc8a.png)
2、由于 14 > 9,所以14只可能存在于9的右子树中,因此查看右孩子 13
![7b0c0388f6814cb8a7d16365c0d42a92.png](https://i-blog.csdnimg.cn/blog_migrate/55d4c1ad026bded68a12b125042e2da7.png)
3、由于 14 > 13,所以继续查看13的右孩子15
![cdd4ac3750e8d98e6f1dbbf07edb1486.png](https://i-blog.csdnimg.cn/blog_migrate/c46c9d7b4f9d1aa89fc64ad580737556.png)
4、由于 14 < 15,所以14只可能存在于15的左孩子中,因此查找15的左孩子14
![a5e4a11eedc7476961221d9948ecf293.png](https://i-blog.csdnimg.cn/blog_migrate/925b76ac4d3553df2f42607b8c3d8eeb.png)
5、这时候发现14正是自己查找的值